-
STAND DER TECHNIK
-
Vorteile einer Hardware-Virtualisierung enthalten flexible Ressourcenbereitstellung, Hardware-unabhängigen Betrieb für Gast-Betriebssysteme und erhöhte Sicherheit für Software-Anwendungen. Zur Bereitstellung dieser Vorteile muss ein Virtualisierungssystem jedoch mehrere Schichten von Computer-Hardware und -Software enthalten. Diese Schichten können einen Prozessor und Speicher, einen Hypervisor, der durch den Prozessor ausgeführt wird, um die Computer-Hardware zu virtualisieren, ein oder mehr Gast-Betriebssysteme, die auf der virtualisierten Computer-Hardware laufen, und Software-Anwendungen, die mit der Unterstützung der Gast-Betriebssysteme laufen, enthalten. Der Hypervisor spielt in einem Virtualisierungssystem eine kritische Rolle, da es der Hypervisor ist, der die darunter liegende Hardware virtualisiert, sodass Gast-Betriebssysteme im Allgemeinen so laufen können wie in einem nicht virtualisierten System.
-
Figurenliste
-
- 1 ist ein Blockdiagramm, das eine Rechenvorrichtung veranschaulicht, die einen leichtgewichtigen Monitor einer virtuellen Maschine gemäß einem Beispiel der vorliegenden Offenbarung implementiert.
- 2 ist ein Ablaufdiagramm, das einen Unterbrechungszustellungsprozess gemäß einem Beispiel der vorliegenden Offenbarung veranschaulicht, der durch die Rechenvorrichtung von 1 ausführbar ist.
- 3 ist ein Blockdiagramm, das eine Rechenvorrichtung gemäß einem Beispiel der vorliegenden Offenbarung veranschaulicht, die einen anderen leichtgewichtigen VMM implementiert.
- 4 ist ein Ablaufdiagramm, das einen Unterbrechungszustellungsprozess gemäß einem Beispiel der vorliegenden Offenbarung veranschaulicht, der durch die Rechenvorrichtung von 3 ausführbar ist.
- 5 ist ein schematisches Diagramm eines Fahrzeugs, das die Rechenvorrichtung gemäß einem Beispiel der vorliegenden Offenbarung von 3 enthält, die ferner zum Isolieren eines CAN-Busses konfiguriert ist.
- 6 ist ein Ablaufdiagramm, das einen Unterbrechungshandhabungsprozess veranschaulicht, der durch die Rechenvorrichtung von 3 gemäß einem Beispiel der vorliegenden Offenbarung ausführbar ist.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die hier offenbarten Systeme und Verfahren befähigen einen leichtgewichtigen VMM, effizient virtuelle Maschinen zu unterbrechen, die er überwacht und steuert. Insbesondere ist in einigen Beispielen der leichtgewichtige VMM konfiguriert, eine Selbst-Inter-Prozessor-Unterbrechung (IPI, Inter-Processor Interrupt) zu verwenden, um externe Unterbrechungen an die virtuellen Maschinen zu liefern. In gewissen Beispielen wird die Selbst-IPI durch Schreiben eines Werts oder mehrerer Werte, enthaltend eine Kennung der externen Unterbrechung, in ein Unterbrechungsbefehlsregister (ICR, Interrupt Command Register) einer programmierbaren Unterbrechungssteuerung erzeugt. Diese programmierbare Unterbrechungssteuerung kann eine fortgeschrittene programmierbare Unterbrechungssteuerung (APIC, Advanced Programmable Interrupt Control) sein. In einigen Beispielen ruft die programmierbare Unterbrechungssteuerung den einen oder die mehr Werte vom ICR ab, identifiziert die externe Unterbrechung und verarbeitet die externe Unterbrechung, was dazu führt, dass die externe Unterbrechung in eine Unterbrechungsdeskriptortabelle (IDT, Interrupt Descriptor Table) einer virtuellen Maschine geschrieben wird, die Ziel für eine Unterbrechungszustellung durch den leichtgewichtigen VMM ist.
-
Diese Technik zum Zustellen von Unterbrechungen verhindert einen unnötigen VM-Austritt, den andere Techniken veranlassen. Ein VM-Austritt ist eine Kontextwechselaktivität, die rechenressourcenintensiv ist und daher die gesamte Systemleistung verschlechtert. Durch Verwendung einer Selbst-IPI zum Zustellen einer externen Unterbrechung an eine IDT einer virtuellen Maschine emulieren die hier offenbarten Beispiele eine nicht virtuelle Rechenumgebung, die der angezielten virtuellen Maschine erlaubt, die externe Unterbrechung zu verarbeiten, als liefe sie auf einer nicht virtualisierten Rechenvorrichtung und ohne einen VM-Austritt zu benötigen.
-
In einigen Beispielen überwacht und steuert der leichtgewichtige VMM seinen eigenen Betrieb und den Betrieb der virtuellen Maschinen durch Zuweisen und Belegen einer virtuellen Maschinensteuerungsstruktur (VMCS, Virtual Machine Control Structure). Die VMCS ist eine Datenstruktur, die verschiedene Felder aufweist. In einigen Beispielen schreibt der leichtgewichtige VMM Werte in seine VMCS, die verhindern, dass sie externe Unterbrechungen während Ausführung aufnimmt und verarbeitet. In diesen Beispielen wird eine solche externe Unterbrechungsverarbeitung an die virtuellen Maschinen und deren Gast-Betriebssysteme delegiert. Dieser Ansatz vereinfacht den leichtgewichtigen VMM, da der VMM keine komplexe Logik ausführen muss, die zum Virtualisieren der programmierbaren Unterbrechungssteuerung notwendig ist. Dieser Ansatz kann auch die Größe der vertrauenswürdigen Rechenbasis (TCB, Trusted Computing Base) senken, abhängig von der Anwendung einer Rechenvorrichtung.
-
In einigen Beispielen überwacht und steuert der leichtgewichtige VMM eine vertrauenswürdige Ausführungsumgebung (TEE, Trusted Execution Environment), die in der Rechenvorrichtung läuft. In diesen Beispielen kann der leichtgewichtige VMM der TEE zusätzliche Sicherheit durch Virtualisieren von Hardware Komponenten bereitstellen, die die TEE ausführen oder mit welchen die TEE mit anderen Komponenten kommuniziert. Beispielsweise virtualisiert in manchen Ausführungsformen der leichtgewichtige VMM einen Speicher der Rechenvorrichtung, wodurch verhindert wird, dass auf Daten, die im Speicher durch eine virtuelle Maschine gespeichert werden, von einer anderen virtuellen Maschine zugegriffen wird. Ferner, wo die Daten, die im Speicher gespeichert sind, zur Kommunikation zwischen dem Prozessor der Rechenvorrichtung und einer Eingabe-/Ausgabe- (I/O, Input/Output) Vorrichtung verwendet werden (z.B. wo die I/O-Vorrichtung DMA zum Speichern von Daten im Speicher verwendet), kann Virtualisierung des Speichers verwendet werden, um die I/O-Vorrichtung von anderen virtuellen Maschinen zu isolieren. Sollte jedoch der VMM auf Daten stoßen, die durch die I/O-Vorrichtung erzeugt werden, die von einer virtuellen Maschine verarbeitet werden müssen, kann der VMM eine solche Verarbeitung effizient durch Zustellung einer externen Unterbrechung an die virtuelle Maschine über die hier offenbarten Techniken einleiten. In mindestens einem Beispiel implementiert der VMM eine Isolierung einer I/O-Vorrichtung innerhalb eines eingebetteten Systems eines Fahrzeugs, das ein Steuergerätenetzwerk- (CAN, Controller Area Network) Bussteuergerät enthält.
-
Weitere andere Aspekte, Ausführungsformen und Vorteile dieser beispielhaften Aspekte und Ausführungsformen sind in der Folge näher besprochen. Überdies sollte klar sein, dass sowohl die vorangehenden Informationen als auch die folgende ausführliche Beschreibung nur veranschaulichende Beispiele verschiedener Aspekte und Ausführungsformen sind und gedacht sind, einen Überblick oder ein Rahmenwerk bereitzustellen, um die Art und Eigenschaft der beanspruchten Aspekte und Ausführungsformen verständlich zu machen. Verweise auf „eine Ausführungsform“, „andere Ausführungsformen“, „ein Beispiel“, „manche Ausführungsformen“, „manche Beispiele“, „eine andere Ausführungsform“, „verschiedene Ausführungsformen“, „eine einzige Ausführungsform“, „mindestens eine Ausführungsform“ „eine andere Ausführungsform“, „diese und andere Ausführungsformen“ oder dergleichen sind nicht unbedingt wechselseitig ausschließend und sollen angeben, dass ein besonderes Merkmal, eine Struktur oder eine Eigenschaft, wie in Verbindung mit der Ausführungsform oder dem Beispiel beschrieben, in mindestens einer Ausführungsform oder einem Beispiel enthalten sein kann. Die Stellen solcher Begriffe hierin beziehen sich nicht unbedingt alle auf dieselbe Ausführungsform oder dasselbe Beispiel. Eine Ausführungsform oder ein Beispiel, wie hier offenbart, kann mit jeder anderen Ausführungsform oder jedem anderen Beispiel kombiniert werden.
-
Ebenso dienen die hier verwendete Phraseologie und Terminologie einer Beschreibung und sollten nicht als Einschränkung angesehen werden. Sämtliche Verweise auf Beispiele, Ausführungsformen, Komponenten, Elemente oder Aktionen der Systeme und Verfahren, auf die hier im Singular Bezug genommen wird, können auch Ausführungsformen umfassen, die eine Vielzahl enthalten, und sämtliche Verweise im Plural auf eine Ausführungsform, Komponente, ein Element oder eine Aktion hier können auch Ausführungsformen umfassen, die nur eine Singularität enthalten. Verweise im Singular oder Plural sollen die gegenwärtig offenbarten Systeme oder Verfahren, deren Komponenten, Aktionen oder Elemente nicht einschränken. Die Verwendung hierin von „enthaltend“, „aufweisend“, „habend“, „beinhaltend“, „involvierend“ und Variationen davon sollen die in der Folge aufgelisteten Punkte und Äquivalente davon wie auch zusätzliche Punkte enthalten. Verweise auf „oder“ können als einschließend ausgelegt werden, sodass sämtliche Begriffe die mit „oder“ beschrieben sind, eines von einem einzelnen, mehr als einem und allen der beschriebenen Begriffe angegeben können. Zusätzlich ist im Fall unbeständiger Verwendungen von Begriffen zwischen diesem Dokument und Dokumenten, die hier zum Zweck der Bezugnahme aufgenommen sind, die Verwendung von Begriffen in den zitierten Referenzen ergänzend zu jener dieses Dokuments; bei widersprüchlichen Unbeständigkeiten gilt die Verwendung von Begriffen in diesem Dokument.
-
Allgemeiner Überblick
-
Herkömmliche Techniken zur Zustellung externer Unterbrechungen an virtuelle Maschinen verbrauchen wesentliche Rechenressourcen. VMMs, die im Wesentlichen die gesamte Hardware einer Rechenvorrichtung virtualisieren, müssen komplexe Logik implementieren, die nicht nur einen Prozessor und Speicher, sondern auch andere spezialisierte Hardware wie programmierbare Unterbrechungssteuerungen emuliert. Während solche vollständig funktionellen VMMs für manche Anwendungen (z.B. Datenzentrumsserver mit wesentlicher Rechenleistung) passend sein können, können sie für andere unpassend sein, wo eine gleichzeitige Verwendung von Hardware selten ist (z.B. eingebettete Systeme).
-
Daher, und gemäß mindestens manchen hier offenbarten Ausführungsformen, implementiert eine Rechenvorrichtung einen leichtgewichtigen VMM, der nur einen Teilsatz der Hardware-Komponenten der Rechenvorrichtung virtualisiert. Beispielsweise vermeidet der leichtgewichtige VMM eine Virtualisierung eines programmierbaren Logiksteuergeräts, das sich in der Rechenvorrichtung befindet, und verarbeitet daher keine externen Unterbrechungen, die durch das programmierbare Logiksteuergerät verarbeitet werden. Da jedoch eine Zustellung externer Unterbrechungen an virtuelle Maschinen für den leichtgewichtigen VMM beim Implementieren gewisser Funktionalität hilfreich ist, führt der leichtgewichtige VMM Techniken aus, die ihn befähigen, dies zu bewerkstelligen, ohne zusätzlichen teuren VM-Austritt zu verursachen.
-
Zustellung von externen Unterbrechungen über einen leichtgewichtigen VMM
-
1 veranschaulicht ein Beispiel einer Rechenvorrichtung 100, die konfiguriert ist, einen leichtgewichtigen VMM zu befähigen, eine Unterbrechung an eine oder mehr VMs bereitzustellen. Wie dargestellt, enthält die Rechenvorrichtung 100 Rechenhardware 102, einen leichtgewichtigen VMM 106 und mehrere VMs 108A-108N (gemeinsam als die VMs 108 und als allgemein einzelnes Element als VM 108 bezeichnet). Die Rechenhardware 102 enthält einen Speicher 110, einen Prozessor 112, I/O-Vorrichtungssteuergeräte 114 und ein Direktspeicherzugriffssteuergerät (DMAC, Direct Memory Access Controller) 126. Diese Rechenhardware- 102 Komponenten sind über eine Interconnect, wie einen Systembus, miteinander verbunden, der durch Leitungen veranschaulicht ist, die die Komponenten verbinden. Wie in 1 gezeigt, enthält der Prozessor 112 eine lokale APIC 116, die auch mit der Interconnect verbunden ist. Jede der VMs 108 führt ein Gast-Betriebssystem (z.B. Linux, Solaris, Windows, AIX, oder FreeBSD) aus. Wie dargestellt, führt die VM 108A ein Gast-Betriebssystem 118 aus, das eine Ausführung der Anwendungen 120 unterstützt. Die VM 108N führt eine TEE 122 aus, die eine Ausführung der Anwendungen 124 unterstützt.
-
Der Prozessor 112 enthält verschiedene Rechenschaltkreise, wie eine Steuereinheit, einer Arithmetik-Logikeinheit und Registerspeicher, die konfiguriert sind, Anweisungen auszuführen, die durch einen Anweisungssatz definiert sind, der von dem Prozessor 112 unterstützt wird. Bei Ausführung der Anweisungen kann der Prozessor 112 Daten bearbeiten, die im Registerspeicher gespeichert sind, wodurch manipulierte Daten erzeugt werden. Der Prozessor 112 kann einen Einzelkernprozessor, einen Mehrkernprozessor, ein Mikrosteuergerät oder manche andere Datenverarbeitungsvorrichtung enthalten. Zur Implementierung und/oder Steuerung spezialisierter Komponenten führt in manchen Ausführungsformen der Prozessor 112 eine Reihe von Anweisungen (d.h. ein oder mehre Programme) aus. Der Prozessor 112 ist an den Speicher 110 und die I/O-Vorrichtungssteuergeräte über einen Zwischenverbindungsmechanismus wie einen Bus oder manche andere Datenverbindungen gekoppelt und konfiguriert, mit diesen Daten zu kommunizieren. Dieser Zwischenverbindungsmechanismus ist in 1 durch Linien dargestellt, die die Komponenten innerhalb der Rechenhardware 102 verbinden. In Betrieb veranlasst der Prozessor 112, dass Daten und/oder codierte Anweisungen aus einem nicht flüchtigen Datenspeichermedium im Speicher 110 gelesen und in einen Hochleistungsdatenspeicher wie einen Registerspeicher geschrieben werden. Der Prozessor 112 manipuliert die Daten und/oder führt die codierten Anweisungen innerhalb des Hochleistungsdatenspeichers aus und kopiert die manipulierten Daten zum Datenspeichermedium, sobald die Verarbeitung beendet ist. In mindestens manchen Beispielen unterstützt der Prozessor 112 Intel® Virtualisierungstechnologie, enthaltend den VMX-Anweisungssatz. Die APIC 116 enthält Schaltkreise, die konfiguriert sind, verschiedene Hardware- und/oder Software-Unterbrechungen zu empfangen und zu verarbeiten. Das DMAC 126 enthält Schaltkreise, die konfiguriert sind, direkte Speicherzugriffs- (DMA) Anfragen zu empfangen und zu verarbeiten.
-
Der Speicher 110 kann flüchtigen und/oder nicht flüchtigen Datenspeicher beinhalten (z.B. Nur-Lese-Speicher, Direktzugriffsspeicher, Flash-Speicher und/oder manche andere computerlesbare und -beschreibbare Medien). Der Speicher 110 ist so bemessen und konfiguriert, dass er Programme speichert, die durch den Prozessor 112 ausführbar sind, und in einigen Beispielen manche der Daten, die von den Programmen während der Ausführung verwendet werden. Beispiele des Speichers 108 enthalten Nur-Lese-Speicher (ROM, Read Only Memory), Direktzugriffsspeicher (RAM, Random Access Memory), dynamischen Direktzugriffsspeicher (DRAM, Dynamic Random Access Memory) und statischen Direktzugriffsspeicher (SRAM, Static Random Access Memory).
-
Die I/O-Vorrichtungssteuergeräte 114 steuern externe Eingabe- und Ausgabevorrichtungen. Beispiele für I/O-Vorrichtungssteuergeräte 114 enthalten Universal Serial Bus (USB) Steuergeräte, Peripherkomponenten-Interconnect- (PCI, Peripheral Component Interconnect) Steuergeräte, Industriestandardarchitektur- (ISA) Steuergeräte, CAN-Bus-Steuergeräte und dergleichen.
-
Wie in 1 dargestellt, ist der Prozessor 112 konfiguriert, den leichtgewichtigen VMM 106 und die VMs 108 zu implementieren. Im Allgemeinen ist der leichtgewichtige VMM 106 konfiguriert, Elemente der Rechenhardware 102 zu virtualisieren und Ausführung der VMs 108 zu verwalten. In einigen Beispielen virtualisiert der leichtgewichtige VMM 106 den Speicher 110 und den Prozessor 112, virtualisiert aber nicht die APIC 116. Ein Auslassen der APIC 116 aus seinem Virtualisierungsumfang ermöglicht dem leichtgewichtigen VMM 106, eine kleinere, einfachere und effizientere Codebasis aufrechtzuerhalten. Ein Auslassen der APIC aus seinem Virtualisierungsumfang ermöglicht dem leichtgewichtigen VMM 106 auch, zu einer kleineren TCB-Größe innerhalb einer gegebenen Anwendung beizutragen.
-
Bezüglich einer VM-Steuerung ist der leichtgewichtige VMM 106 in einigen Beispielen konfiguriert eine VMCS zuzuweisen, um seinen eigenen Betrieb zu regeln, und separate VMCSs zuzuweisen, um die Ausführung der VMs 108 zu regeln. Die VMCS ist eine Datenstruktur, die eine Reihe von Feldern aufweist, von welchen manche in der Folge beschrieben sind. Mit mindestens seiner eigenen VMCS vor Ort kann der VMM 106 einen virtualisierten Betrieb des Prozessors 112 einleiten (z.B. durch Ausführen einer VMXON-Anweisung), eine sequenzielle Ausführung der VMs 108 einleiten (z.B. durch Ausführung einer VMLAUNCH OR VMRESUME Anweisung), und/oder einen virtualisierten Betrieb des Prozessors 112 beenden (z.B. durch Ausführung einer VMXOFF Anweisung).
-
Wie in 1 dargestellt, ist der leichtgewichtige VMM 106 konfiguriert, ein Unterbrechungsfenster bei einer der VMs 108 anzufragen, die der leichtgewichtige VMM 106 als Ziel für eine Zustellung einer externen Unterbrechung hat.
-
Da er ein leichtgewichtiger VMM wie oben beschrieben ist, ist der leichtgewichtige VMM 106 konfiguriert, keine externen Unterbrechungen von den I/O-Vorrichtungssteuergeräten 114 aufzunehmen oder externe Unterbrechungen handzuhaben. Vielmehr ist der leichtgewichtige VMM 106 konfiguriert, dem Gast-Betriebssystem der aktiven VM 108 zu erlauben, diese Funktionen durchzuführen. In mindestens einem Beispiel ist der leichtgewichtige VMM 106 konfiguriert, externe Unterbrechungsverarbeitung, wie oben beschrieben, durch Schreiben eines Werts von 0 in Bit[0] der Pin-basierten VM-Ausführungssteuerfelder der VMCS für den VMM 106 zu vermeiden.
-
Trotz dieser Konfiguration zur Vermeidung einer Unterbrechungsverarbeitung könnte der leichtgewichtige VMM 106 externe Unterbrechungen in eine VM 108 zustellen müssen, um gewisse Merkmale zu implementieren (wie z.B. CAN-Busisolation, wie weiter unten unter Bezugnahme auf 5 und 6 beschrieben). Daher ist in einigen Beispielen der leichtgewichtige VMM 106 konfiguriert, externe Unterbrechungen unter Verwendung eines VM-Eintritt-Unterbrechungsinformationsfelds innerhalb der VMCS der VM 108 zuzustellen. In diesen Beispielen ist der leichtgewichtige VMM 106 zum Zustellen einer externen Unterbrechung konfiguriert, eine Kennung der externen Unterbrechung (z.B. einen Vektor) in das VM-Eintritt-Unterbrechungsinformationsfeld zu schreiben. Ferner ist in diesen Beispielen der Prozessor 112 konfiguriert, beim nächsten VM-Eintritt in die VM 108 die Kennung der externen Unterbrechung, die im VM-Eintritt-Unterbrechungsinformationsfeld gespeichert ist, abzurufen, und eine virtuelle Unterbrechung durch die IDT der VM 108 zu leiten.
-
In manchen Situationen jedoch kann die VM 108 konfiguriert sein, externe Unterbrechungen zu maskieren (z.B. indem ein Wert von 0 im Bit[9] des RFLAGS Registerfelds der VMCS für die VM 108 gespeichert wird). In dieser Situation ist der Prozessor 112 konfiguriert, den Inhalt des VM-Eintritt-Unterbrechungsinformationsfelds während des VM-Eintritts zu ignorieren, und daher kann ein Versuch, externe Unterbrechungen unter Verwendung des VM-Eintritt-Unterbrechungsinformationsfelds wie oben beschrieben zuzustellen, misslingen. Aus diesem Grund ist der leichtgewichtige VMM 106 in einigen Beispielen konfiguriert, einen Prozess einzuleiten, der externe Unterbrechungen in einer VM 108 unter Verwendung eines Unterbrechungsfensters zustellt. 2 veranschaulicht ein Beispiel eines solchen Unterbrechungszustellungsprozesses 200, der durch die Rechenvorrichtung 100 ausführbar ist.
-
Wie in 2 gezeigt, startet der Unterbrechungszustellungsprozess 200 in Vorgang 202 mit dem leichtgewichtigen VMM 106, der bestimmt, ob die VM 108 für einen Empfang von Unterbrechungen bereit ist. Zum Beispiel kann die VM 108 inaktiv sein. Falls die VM 108 zum Empfang von Unterbrechungen bereit ist, führt der leichtgewichtige VMM 106 Vorgang 204 aus. Andernfalls führt der leichtgewichtige VMM 106 Vorgang 208 aus.
-
Im Vorgang 208 fordert der leichtgewichtige VMM 106 an, dass die VM 108 austritt, wenn die VM 108 bereit ist, eine Unterbrechung anzunehmen. Beispielsweise setzt in einigen Beispielen der leichtgewichtige VMM 106 ein Unterbrechungsfenster-Flag für die VM 108, indem er einen Wert von 1 in Bit[2] des Prozessor-basierten VM-Ausführungssteuerfelds für die VMCS für die VM 108 schreibt. In Vorgang 210 kehrt der leichtgewichtige VMM 106 zu der VM 108 zurück. In Vorgang 212 führt die VM 108 aus, bis sie zum Empfangen einer Unterbrechung bereit ist, und tritt dann aus, um das Unterbrechungsfenster zu öffnen, was einen VM-Austritt erzeugt. Sobald der VM-Austritt beendet ist, ist die VM 108 bereit, Unterbrechungen zu empfangen. In Vorgang 214 löscht der leichtgewichtige VMM 106 das Unterbrechungsfenster-Flag, indem er zum Beispiel, einen Wert von 0 in Bit[2] des Prozessor-basierten VM-Ausführungssteuerfelds der VMCS für die VM 108 schreibt.
-
Im Vorgang 204 schreibt der leichtgewichtige VMM 106 eine Kennung der externen Unterbrechung in das VM-Eintritt-Unterbrechungsinformationsfeld der VMCS für die VM 108. In Vorgang 206 kehrt der leichtgewichtige VMM 106 zur VM 108 zurück, wodurch ein VM-Eintritt veranlasst wird, der die Unterbrechung in der VM 108 wie oben beschrieben zustellt, und der Unterbrechungszustellungsprozess 200 endet.
-
Der Unterbrechungszustellungsprozess 200 befähigt einen leichtgewichtigen VMM, zuverlässig externe Unterbrechungen in eine überwachte VM zuzustellen. Der Unterbrechungszustellungsprozess 200 erreicht dies jedoch mindestens in manchen Fällen, indem er der überwachten VM veranlasst, einen VM-Austritt zu erzeugen. Dieser Betrieb ist rechenressourcenintensiv. Daher enthalten andere Beispiele Rechenvorrichtungen, die konfiguriert sind, Unterbrechungszustellungsprozesse zu implementieren, die keinen VM-Austritt verursachen.
-
3 veranschaulicht ein Beispiel einer Rechenvorrichtung 300, die konfiguriert ist, einen leichtgewichtigen VMM zu befähigen, eine Unterbrechung bei einer oder mehr VMs bereitzustellen, ohne einen VM-Austritt zu verursachen. Wie gezeigt, enthält die Rechenvorrichtung 300 viel der in 1 veranschaulichten Komponenten. Diese Komponenten sind strukturiert und funktionieren in der Rechenvorrichtung 300 auf gleiche Weise wie in der Rechenvorrichtung 100.
-
Wie in 1 gezeigt, ist der Prozessor 112 konfiguriert, den leichtgewichtigen VMM 306 und die VMs 108 zu implementieren. Im Allgemeinen ist der leichtgewichtige VMM 306 konfiguriert, Elemente der Rechenhardware 102 zu virtualisieren und Ausführung der VMs 108 zu verwalten. In einigen Beispielen virtualisiert der leichtgewichtige VMM 306 den Speicher 110 und den Prozessor 1112, virtualisiert aber nicht die APIC 116. Auslassen der APIC 116 aus dem Umfang einer Virtualisierung befähigt den leichtgewichtigen VMM 306, eine kleinere, einfacherer oder effizientere Codebasis aufrechtzuerhalten. Auslassen der APIC aus seinem Umfang einer Virtualisierung befähigt den leichtgewichtigen VMM 306 auch, zu einer kleineren TCB-Größe innerhalb einer gegebenen Anwendung beizutragen.
-
Bezüglich einer VM-Steuerung ist der leichtgewichtige VMM 306 in einigen Beispielen konfiguriert, eine VMCS zur Regelung seines eigenen Betriebs zuzuweisen und separate VMCSs zur Regelung der Ausführung der VMs 108 zuzuweisen. Mit mindestens seiner eigenen VMCS vor Ort kann der VMM 306 einen virtualisierten Betrieb des Prozessors 112 einleiten (z.B. durch Ausführung einer VMXON-Anweisung), eine sequenzielle Ausführung der VMs 108 einleiten (z.B. durch Ausführung einer VMLAUNCH OR VMRESUME Anweisung) und/oder einen virtualisierten Betrieb des Prozessors 112 beenden (z.B. durch Ausführung einer VMXOFF Anweisung).
-
Da er ein leichtgewichtiger VMM wie oben beschrieben ist, ist der leichtgewichtige VMM 306 konfiguriert, keine externen Unterbrechungen von den I/O-Vorrichtungssteuergeräten 114 anzunehmen oder externe Unterbrechungen handzuhaben. Vielmehr ist der leichtgewichtige VMM 306 konfiguriert, dem Gast-Betriebssystem der aktiven VM 108 zu ermöglichen, diese Funktionen auszuführen. In mindestens einem Beispiel ist der leichtgewichtige VMM 306 konfiguriert, eine externe Unterbrechungsverarbeitung wie oben beschrieben zu vermeiden, indem er einen Wert von 0 in Bit[0] des Pin-basierten VM-Ausführungssteuerfelds der VMCS für den VMM 306 schreibt.
-
Trotz dieser Konfiguration zur Vermeidung einer Unterbrechungsverarbeitung könnte der leichtgewichtige VMM 306 externe Unterbrechungen in einer VM 108 zustellen müssen, um gewisse Merkmale zu implementieren (z.B., wie CAN-Busisolation, wie weiter unten unter Bezugnahme auf 5 und 6 beschrieben ist). Daher ist der leichtgewichtige VMM 306 in einigen Beispielen konfiguriert, externe Unterbrechungen unter Verwendung einer Selbst-IPI zuzustellen. Diese Beispiele unterstützen die Tatsache, dass eine VM 108 bei Ring 0 ausführt, wenn unter Verwendung des VMX Anweisungssatzes implementiert. Als solches empfängt eine VM 108 jede Selbst-IPI, die durch den leichtgewichtigen VMM 306 erzeugt wird, während die VM 108 ausführt. Da der leichtgewichtige VMM 306 konfiguriert ist, keine externen Unterbrechungen anzunehmen und handzuhaben, werden sie zum Gast-Betriebssystem der derzeit ausführenden VM 108 geleitet.
-
4 veranschaulicht ein Beispiel eines Unterbrechungszustellungsprozesses 400, der durch die Rechenvorrichtung 300 ausführbar ist, um eine Selbst-IPI zu nutzen, um einen VM-Austritt zu vermeiden. Wie in 4 gezeigt, startet der Unterbrechungszustellungsprozess 400 in Vorgang 402 mit dem leichtgewichtigen VMM 306, der eine Selbst-IPI erzeugt. Zum Beispiel kann der VMM 306 eine Selbst-IPI erzeugen, indem er passende Werte in das Unterbrechungsbefehlsregister der APIC 116 schreibt. Diese Werte können eine Kennung (z.B. einen Vektor) der externen Unterbrechung enthalten. In Vorgang 404 kehrt der leichtgewichtige VMM 306 zur VM 108 zurück, wodurch in Vorgang 406 veranlasst wird, dass die externe Unterbrechung der VM 108 über die IDT der VM 108 zugestellt wird, und der Unterbrechungszustellungsprozess 400 endet. Der Unterbrechungszustellungsprozess 400 befähigt einen leichtgewichtigen VMM, externe Unterbrechungen in einer überwachten VM zuverlässig zuzustellen und dies ohne einen überflüssigen VM-Austritt zu bewerkstelligen.
-
Kraftfahrzeugbeispiele
-
Die hier offenbarten innovativen Systeme und Verfahren einer effizienten Zustellung externer Unterbrechungen an virtuelle Maschinen sind für eine Reihe verschiedener Anwendungen geeignet. Beispielsweise verwenden manche Beispiele Virtualisieren, um zusätzliche Sicherheit bei einer TEE bereitzustellen, die in einem eingebetteten System in einem Fahrzeug ausführt. Diese Beispiele isolieren ein CAN-Bussteuergerät, das in dem Fahrzeug angeordnet ist, durch Virtualisieren von Systemspeicher und, falls zutreffend, Zustellung externer Unterbrechungen zu der TEE, um eine Ausführung eines Unterbrechungsdienstprogramms (ISR, Interrupt Service Routine) in der TEE einzuleiten. 5 und 6 veranschaulichen Aspekte dieser Beispiele.
-
5 veranschaulicht ein Fahrzeug 500. Das Fahrzeug 500 enthält eine Rechenvorrichtung 502, Reifendrucksensoren 506A-506D (gemeinsam als die Reifendrucksensoren 506 und als allgemeine einzelne Elemente als Reifendrucksensor 506 bezeichnet) und einen Näherungssensor 508. Die Rechenvorrichtung 502 enthält die Komponenten der Rechenvorrichtung 300 und ein CAN-Bussteuergerät 504, das an die Interconnect der Rechenhardware 102 gekoppelt ist. Wie in 5 gezeigt, sind die Reifendrucksensoren 506, der Näherungssensor 508 und das CAN-Bussteuergerät 504 über einen CAN-Bus aneinander gekoppelt, wie als ein Satz gestrichelter Linien zwischen diesen Komponenten veranschaulicht ist.
-
In einigen Beispielen ist das CAN-Bussteuergerät 504 konfiguriert, auf den Speicher 110 direkt über Direktspeicherzugriffs-, (DMA), Anfragen an das DMA-Steuergerät 126 zuzugreifen. In diesen Beispielen ist das CAN-Bus Steuergerät 504 konfiguriert, Eingangsdaten von den Sensoren 506 und 508 zu empfangen und DMA-Anfragen zu übertragen, um diese Eingangsdaten in eine oder mehr vordefinierte Speicheradressen im Speicher 110s zu schreiben. Das DMA-Steuergerät 126 ist konfiguriert, nach Beendigung dieser DMA-Anfragen eine Nachricht an den leichtgewichtigen VMM 306 zu senden. Diese Nachricht kann eine spezifische Unterbrechung sein, für deren Verarbeitung der leichtgewichtige VMM 306 konfiguriert ist.
-
In gewissen Beispielen ist der leichtgewichtige VMM 306 konfiguriert, nur die VM 108N auszuführen, die die TEE 122 und die Anwendungen 124 enthält. Ferner ist in diesen Beispielen der leichtgewichtige VMM 306 weiter konfiguriert, das CAN-Bussteuergerät 504 durch Virtualisieren des Speichers 110 zu isolieren. Dadurch stellt der VMM 306 sicher, dass nur Prozesse, die durch die VM 108N ausgeführt werden, auf die eine oder mehreren vordefinierten Speicheradressen zugreifen können, an welchen das CAN-Bussteuergerät 504 Eingangsdaten speichern kann.
-
In einigen Beispielen ist die Rechenvorrichtung 502 konfiguriert, einen Prozess auszuführen, durch den Sensordaten, die von den Sensoren 506 und 508 erzeugt werden, empfangen und analysiert werden. In diesen Beispielen übertragen die Sensoren 506 und 508 die Sensordaten an das CAN-Bussteuergerät 504. Das CAN-Bussteuergerät 504 empfängt die Sensordaten und überträgt eine DMA-Anfrage an das DMA-Steuergerät 126, um die Sensordaten als Eingangsdaten an der einen oder den mehreren vordefinierten Speicheradressen zu schreiben. Nachdem die Eingangsdaten an der einen oder den mehreren vordefinierten Speicheradressen gespeichert wurden, benachrichtigt das DMA-Steuergerät 126 den leichtgewichtigen VMM 306 über das Vorliegen der Eingangsdaten. Bei Empfang dieser Nachricht führen der leichtgewichtige VMM 306 und die virtuelle Maschine 108 gemeinsam einen Unterbrechungshandhabungsprozess 600 aus, wie in 6 veranschaulicht.
-
Wie in 6 gezeigt, startet der Unterbrechungshandhabungsprozess 600 in Vorgang 602 mit dem leichtgewichtigen VMM 306, der die Nachricht, die verfügbare Eingangsdaten angeben, vom DMA-Steuergerät 126 empfängt. In Vorgang 604 erzeugt der leichtgewichtige VMM 306 eine Selbst-IPI. In Vorgang 606 kehrt der leichtgewichtige VMM 306 zur Ausführung der VM 108N zurück. In Vorgang 608 empfängt die VM 108N eine externe Unterbrechung, die aus der Selbst-IPI resultiert, über ihre IDT. In Vorgang 610 führt die VM 108N eine ISR aus, die mit der externen Unterbrechung verknüpft ist, um die Eingangsdaten zu verarbeiten.
-
Jeder der hier gezeigten Prozesse enthält in einem Beispiel eine Abfolge von Vorgängen. Diese Vorgänge, die in diesen Prozessen enthalten sind, können von, oder unter Verwendung von, einer oder mehreren Rechenvorrichtungen durchgeführt werden, die im Speziellen wie hier besprochen konfiguriert sind. Einige Vorgänge sind optional und können als solche gemäß einem oder mehreren Beispiele ausgelassen werden. Zusätzlich kann die Reihenfolge von Vorgängen geändert werden oder andere Vorgänge können hinzugefügt werden, ohne vom Umfang der hier besprochenen Systeme und Verfahren abzuweichen.
-
Wie oben beschrieben, kann der Prozessor 112 ein Allzweckprozessor sein. Wenn jedoch ein spezifischer Softwareprozess wie hier beschrieben durchgeführt wird (z.B. wie in einer von 2 und/oder 4 gezeigt), wird der Prozessor 112 zu einem Spezialzweckprozessor, der imstande ist, spezifische logikbasierte Bestimmungen basierend auf empfangenen Eingangsdaten vorzunehmen, und weiter imstande ist, einen oder mehrere Ausgänge bereitzustellen, die zum Steuern oder auf andere Weise Informieren einer anschließenden Verarbeitung verwendet werden, die durch den Prozessor 112 und/oder andere Prozessoren oder Schaltkreise, mit welchen Prozessor 112 kommunikativ gekoppelt ist, durchgeführt werden. Der Prozessor 112 reagiert auf einen spezifischen Eingangsstimulus in einer spezifischen Weise und erzeugt einen entsprechenden Ausgang basierend auf diesem Eingangsstimulus. In diesem Sinn ist die Struktur von Prozessor 112 gemäß einer Ausführungsform durch die Prozesse definiert, die in einer von 2 und/oder 4 gezeigt sind. Überdies läuft in manchen beispielhaften Fällen der Prozessor 112 durch eine Abfolge logischer Übergänge, in welchen verschiedene interne Registerzustände und/oder andere Bit-Zellzustände intern oder extern des Prozessors 112 auf ein logisches Hoch oder ein logisches Tief gesetzt werden können. Diese spezifische Abfolge logischer Übergänge wird durch den Zustand elektrischer Eingangssignale zu dem Prozessor 112 bestimmt und eine Spezialzweckstruktur wird effektiv durch den Prozessor 112 angenommen, wenn jede Software-Anweisung der Prozesse, die in 2 und/oder 4 dargestellt sind, ausgeführt wird. Im Speziellen nehmen diese Anweisungen den unterschiedlichen, zu empfangenden Stimulus vorweg und ändern die implizierten Speicherzustände entsprechend. Auf diese Weise kann der Prozessor 112 nützliche Ausgangssignale erzeugen und speichern oder auf andere Weise bereitstellen. Daher ist klar, dass der Prozessor 112 während Ausführung eines Softwareprozesses eine Spezialzweckmaschine wird, die zur Verarbeitung nur spezifischer Signale und Rendern spezifischer Ausgangssignale basierend auf dem einen oder den mehreren logischen Betrieben imstande ist, die während Ausführung jeder Anweisung durchgeführt werden. In mindestens manchen Beispielen ist der Prozessor 112 konfiguriert, eine Funktion auszuführen, wo Software in einer Datenspeichervorrichtung gespeichert ist, die mit dem Prozessor 112 gekoppelt ist (z.B. dem Speicher 110), und diese Software ist konfiguriert, den Prozessor 112 zu veranlassen, durch eine Abfolge verschiedener Logikbetriebe zu laufen, die dazu führen, dass die Funktion ausgeführt wird.
-
Überdies können verschiedene Beispiele unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination von beiden implementiert sein. Beispiele für Hardwareelemente können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z.B. Transistoren Widerstrände, Kondensatoren, Induktoren usw.), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD, Programmable Logic Device), Digitalsignalprozessoren (DSP), feldprogrammierbare Gate Array (FPGA), Logikgates, Register, Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und so weiter enthalten. Beispiele für Software können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystem-Software, Middleware, Firmware, Softwaremodule, Programme, Teilprogramme, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Anwendungsprogrammschnittstellen (API, Application Programm Interface), Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine Kombination davon enthalten. Ob Hardwareelemente und/oder Softwareelemente verwendet werden, kann von einem Beispiel zum nächsten gemäß einer Anzahl von Faktoren variieren, wie gewünschte Rechenrate, Leistungspegel, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und andere Design- oder Leistungseinschränkungen.
-
Einige Beispiele können zum Beispiel unter Verwendung eines nicht transitorischen, maschinenlesbaren Mediums oder Gegenstands oder Computerprogrammprodukts implementiert werden, die eine Anweisung oder einen Satz von Anweisungen speichern können, die, falls von einer Maschine ausgeführt, die Maschine veranlassen können, ein Verfahren, einen Prozess und/oder Betriebe gemäß einem Beispiel der vorliegenden Offenbarung auszuführen. Eine solche Maschine kann zum Beispiel jede geeignete Verarbeitungsplattform, Rechenplattform, Rechenvorrichtung, Verarbeitungsvorrichtung, jedes geeignete Rechensystem, Verarbeitungssystem, jeden geeigneten Computer, Prozessor oder dergleichen enthalten und kann unter Verwendung einer geeigneten Kombination von Hardware und Software implementiert werden. Das maschinenlesbare Medium oder der Gegenstand kann zum Beispiel jede geeignete Art von Speichereinheit, Speichervorrichtung, Speichergegenstand, Speichermedium, Datenspeichervorrichtung, Datenspeichergegenstand, Datenspeichermedium und/oder Datenspeichereinheit enthalten, zum Beispiel Speicher, entfernbare oder nicht entfernbare Medien, löschbare oder nicht löschbare Medien, beschreibbare oder wieder beschreibbare Medien, digitale oder analoge Medien, Festplattenlaufwerk, Diskette, Compact Disk Read Only Memory (CD-ROM), Compact Disk Recordable (CD-R), Compact Disk Rewriteable (CD-RW), optische Platte, magnetische Medien, magneto-optische Medien, entfernbare Speicherkarten oder -platten, verschiedene Arten von Digital Versatile Disk (DVD), ein Band, eine Kassette oder dergleichen. Die Anweisungen können jede geeignete Art von ausführbarem Code enthalten, der unter Verwendung einer geeigneten hohen, niedrigen objektorientierten, visuellen, kompilierten und/oder interpretierten Programmierungssprache implementiert wird.
-
Weitere beispielhafte Ausführungsformen
-
Die folgenden Beispiele beziehen sich auf weitere Ausführungsformen, aus welchen zahlreiche Abänderungen und Konfigurationen hervorgehen.
-
Beispiel 1 ist eine Rechenvorrichtung, aufweisend einen Speicher, mindestens einen Prozessor, der an den Speicher gekoppelt ist, und eine fortgeschrittene programmierbare Unterbrechungssteuerung (APIC), die in dem mindestens einen Prozessor enthalten ist. Der mindestens eine Prozessor ist konfiguriert, einen leichtgewichtigen Monitor einer virtuellen Maschine (VMM) auszuführen; eine virtuelle Maschine unter Steuerung des leichtgewichtigen VMM auszuführen; und über Ausführung des leichtgewichtigen VMM eine Selbst-Inter-Prozessor-Unterbrechung (IPI) auszuführen, die eine Kennung einer externen Unterbrechung aufweist. Die fortgeschrittene programmierbare Unterbrechungssteuerung (APIC) ist konfiguriert, die Selbst-IPI zu empfangen; die externe Unterbrechung zu identifizieren; und die externe Unterbrechung an die virtuelle Maschine zuzustellen.
-
Beispiel 2 enthält den Gegenstand von Beispiel 1, wobei der leichtgewichtige VMM weiter konfiguriert ist, Hardware außer der APIC zu virtualisieren.
-
Beispiel 3 enthält den Gegenstand von entweder Beispiel 1 oder Beispiel 2, wobei der leichtgewichtige VMM weiter konfiguriert ist, eine erste virtuelle Maschinensteuerungsstruktur (VMCS) zuzuweisen, um Ausführung der virtuellen Maschine zu verwalten; eine zweite VMCS zuzuweisen, um Ausführung des leichtgewichtigen VMM zu verwalten, wobei die zweite VMCS ein Pin-basiertes VM-Ausführungssteuerfeld aufweist; und einen Wert von 0 in Bit[0] des Pin-basierten VM-Ausführungssteuerfelds der zweiten VMCS zu schreiben.
-
Beispiel 4 enthält den Gegenstand eines der Beispiele 1 bis 3, wobei der leichtgewichtige VMM weiter konfiguriert ist, Ausführung der virtuellen Maschine einzuleiten.
-
Beispiel 5 enthält den Gegenstand eines der Beispiele 1 bis 4, wobei die APIC ein Unterbrechungsbefehlsregister (ICR) aufweist und der leichtgewichtige VMM konfiguriert ist, die Selbst-IPI mindestens teilweise durch Schreiben eines oder mehrerer Werte in das ICR zu erzeugen.
-
Beispiel 6 enthält den Gegenstand eines der Beispiele 1 bis 5, wobei die virtuelle Maschine eine Unterbrechungsdeskriptortabelle (IDT) aufweist und die APIC konfiguriert ist, die externe Unterbrechung mindestens teilweise durch Schreiben einer Kennung der externen Unterbrechung in die IDT zuzustellen.
-
Beispiel 7 enthält den Gegenstand eines der Beispiele 1 bis 6, wobei die virtuelle Maschine konfiguriert ist, ein Unterbrechungsdienstprogramm (ISR) in Antwort auf Erfassen der externen Unterbrechung auszuführen, wobei das ISR konfiguriert ist, Eingangsdaten zu verarbeiten, die an einer vordefinierten Adresse im Speicher gespeichert sind, und der leichtgewichtige VMM weiter konfiguriert ist, den Speicher zu virtualisieren, den Prozessor ohne Virtualisierung der APIC zu virtualisieren; eine Nachricht zu empfangen, die anzeigt, dass Eingangsdaten an der vordefinierten Adresse verfügbar sind; und die Selbst-IPI in Antwort auf Empfangen der Nachricht zu erzeugen.
-
Beispiel 8 enthält den Gegenstand von Beispiel 7, ferner aufweisend ein Steuergerätenetzwerk-, (CAN), Bussteuergerät, das an einen CAN-Bus und den Speicher gekoppelt ist, und konfiguriert ist, die Eingangsdaten über den CAN-Bus zu empfangen; und die Eingangsdaten an der vordefinierten Adresse zu speichern.
-
Beispiel 9 enthält den Gegenstand von Beispiel 8, wobei der CAN-Bus in einem Fahrzeug angeordnet ist.
-
Beispiel 10 ist ein Verfahren zur Zustellung einer externen Unterbrechung an eine virtuelle Maschine unter Verwendung eines leichtgewichtigen Monitors einer virtuellen Maschine (VMM). Das Verfahren weist Ausführen, über mindestens einen Prozessor einer Rechenvorrichtung, des leichtgewichtigen VMM; Ausführen, über den mindestens einen Prozessor der Rechenvorrichtung, einer virtuellen Maschine unter Steuerung des leichtgewichtigen VMM; Erzeugen, über Ausführung des leichtgewichtigen VMM, einer Selbst-Inter-Prozessor-Unterbrechung (IPI), die eine Kennung einer externen Unterbrechung aufweist; Empfangen, über eine fortgeschrittene programmierbare Unterbrechungssteuerung (APIC), der Selbst-IPI; Identifizieren, über die APIC, der externen Unterbrechung; und Zustellen, über die APIC, der externen Unterbrechung an die virtuelle Maschine auf.
-
Beispiel 11 enthält den Gegenstand von Beispiel 10, ferner aufweisend Virtualisierungs-Hardware außer der APIC.
-
Beispiel 12 enthält den Gegenstand von entweder Beispiel 10 oder Beispiel 11, ferner aufweisend Zuweisen einer ersten virtuellen Maschinensteuerungsstruktur (VMCS), um Ausführung der virtuellen Maschine zu verwalten; Zuweisen einer zweiten VMCS, um Ausführung des leichtgewichtigen VMM zu verwalten, wobei die zweite VMCS ein Pin-basiertes VM-Ausführungssteuerfeld aufweist; und Schreiben eines Werts von 0 in Bit[0] des Pin-basierten VM-Ausführungssteuerfelds der zweiten VMCS.
-
Beispiel 13 enthält den Gegenstand eines der Beispiele 10 bis 12, ferner aufweisend Einleiten einer Ausführung der virtuellen Maschine durch den leichtgewichtigen VMM.
-
Beispiel 14 enthält den Gegenstand eines der Beispiele 10 bis 13, wobei Erzeugen der Selbst-IPI Schreiben eines oder mehrerer Werte in ein Unterbrechungsbefehlsregister aufweist.
-
Beispiel 15 enthält den Gegenstand eines der Beispiele 10 bis 14, wobei Zustellen der externen Unterbrechung Schreiben einer Kennung der externen Unterbrechung in eine Unterbrechungsdeskriptortabelle der virtuellen Maschine aufweist.
-
Beispiel 16 enthält den Gegenstand eines der Beispiele 10 bis 15, ferner aufweisend Virtualisieren, über Ausführung des leichtgewichtigen VMM, eines Speichers der Rechenvorrichtung; Virtualisieren, über Ausführung des leichtgewichtigen VMM, des Prozessors ohne Virtualisieren der APIC; Empfangen, über Ausführung des leichtgewichtigen VMM, einer Nachricht, die anzeigt, dass Eingangsdaten an einer vordefinierten Adresse im Speicher verfügbar sind; Erzeugen der Selbst-IPI in Antwort auf Empfangen der Nachricht; Ausführen, über Ausführung der virtuellen Maschine, eines Unterbrechungsdienstprogramms (ISR) in Antwort auf Erfassen der externen Unterbrechung; und Verarbeiten, über Ausführung des ISR, von Eingangsdaten, die an der vordefinierten Adresse gespeichert sind.
-
Beispiel 17 enthält den Gegenstand von Beispiel 16, ferner aufweisend Empfangen der Eingangsdaten über einen CAN-Bus und Speichern der Eingangsdaten an der vordefinierten Adresse.
-
Beispiel 18 enthält den Gegenstand von Beispiel 17, wobei Empfangen der Eingangsdaten Empfangen der Eingangsdaten über einen CAN-Bus aufweist, der in einem Fahrzeug angeordnet ist.
-
Beispiel 19 ist ein nicht transitorisches computerlesbares Medium, das mit Anweisungen codiert ist, die, wenn von einem oder mehreren Prozessoren ausgeführt, veranlassen, das ein Prozess zum Zustellen von Unterbrechungen an eine virtuelle Maschine durchgeführt wird. Der Prozess weist Ausführen, über mindestens einen Prozessor einer Rechenvorrichtung, eines leichtgewichtigen VMM; Ausführen, über den mindestens einen Prozessor der Rechenvorrichtung, einer virtuellen Maschine unter Steuerung des leichtgewichtigen VMM; Erzeugen, über Ausführung des leichtgewichtigen VMM, einer Selbst-Inter-Prozessor-Unterbrechung (IPI), die eine Kennung einer externen Unterbrechung aufweist; Empfangen, über eine fortgeschrittene programmierbare Unterbrechungssteuerung (APIC), der Selbst-IPI; Identifizieren, über die APIC, der externen Unterbrechung; und Zustellen, über die APIC, der externen Unterbrechung an die virtuelle Maschine auf.
-
Beispiel 20 enthält den Gegenstand von Beispiel 19, wobei der Prozess weiter Virtualisieren Hardware außer der APIC aufweist.
-
Beispiel 21 enthält den Gegenstand von entweder Beispiel 19 oder Beispiel 20, wobei der Prozess ferner Zuweisen einer ersten virtuellen Maschinensteuerungsstruktur (VMCS), um Ausführung der virtuellen Maschine zu verwalten; Zuweisen einer zweiten VMCS, um Ausführung des leichtgewichtigen VMM zu verwalten, wobei die zweite VMCS ein Pin-basiertes VM-Ausführungssteuerfeld aufweist; und Schreiben eines Werts von 0 in Bit[0] des Pin-basierten VM-Ausführungssteuerfelds der zweiten VMCS aufweist.
-
Beispiel 22 enthält den Gegenstand eines der Beispiele 19 bis 21, wobei der Prozess ferner Einleiten einer Ausführung der virtuellen Maschine durch den leichtgewichtigen VMM aufweist.
-
Beispiel 23 enthält den Gegenstand eines der Beispiele 19 bis 22, wobei Erzeugen der Selbst-IPI Schreiben eines oder mehrerer Werte in ein Unterbrechungsbefehlsregister aufweist.
-
Beispiel 24 enthält den Gegenstand eines der Beispiele 19 bis 23, wobei Zustellen der externen Unterbrechung Schreiben einer Kennung der externen Unterbrechung in eine Unterbrechungsdeskriptortabelle der virtuellen Maschine aufweist.
-
Beispiel 25 enthält den Gegenstand eines der Beispiele 19 bis 24, wobei der Prozess ferner Virtualisieren, über Ausführung des leichtgewichtigen VMM, eines Speichers der Rechenvorrichtung; Virtualisieren, über Ausführung des leichtgewichtigen VMM, des Prozessors ohne Virtualisieren der APIC; Empfangen, über Ausführung des leichtgewichtigen VMM, einer Nachricht, die anzeigt, dass Eingangsdaten an einer vordefinierten Adresse im Speicher verfügbar sind; Erzeugen der Selbst-IPI in Antwort auf Empfangen der Nachricht; Ausführen, über Ausführung der virtuellen Maschine, eines Unterbrechungsdienstprogramms (ISR) in Antwort auf Erfassen der externen Unterbrechung; und Verarbeiten, über Ausführung des ISR, von Eingangsdaten, die an der vordefinierten Adresse gespeichert sind, aufweist.
-
Beispiel 26 enthält den Gegenstand von Beispiel 25, wobei der Prozess ferner Empfangen der Eingangsdaten über einen CAN-Bus; und Speichern der Eingangsdaten an der vordefinierten Adresse aufweist.
-
Beispiel 27 enthält den Gegenstand von Beispiel 26, wobei Empfangen der Eingangsdaten Empfangen der Eingangsdaten über einen CAN-Bus aufweist, der in einem Fahrzeug angeordnet ist.
-
Die Begriffe und Ausdrücke, die hier benutzt wurden, sind Begriffe einer Beschreibung und nicht einer Einschränkung und es ist nicht beabsichtigt, durch Verwendung solcher Begriffe und Ausdrücke, Äquivalente der gezeigten und beschriebenen Merkmale (oder Teile davon) auszuschließen, und es ist klar, dass verschiedene Modifizierungen im Umfang der Ansprüche möglich sind. Daher sollen die Ansprüche alle solche Äquivalente abdecken. Verschiedene Merkmale, Aspekte und Ausführungsformen wurden hier beschrieben. Die Merkmale, Aspekte und Ausführungsformen eignen sich für eine Kombination miteinander wie auch für eine Variation und Modifikation, wie dem Fachmann klar sein wird. Die vorliegende Offenbarung sollte daher so betrachtet werden, dass sie solche Kombinationen, Variationen und Modifikationen umfasst. Es ist beabsichtigt, dass der Umfang der vorliegenden Offenbarung nicht durch diese ausführliche Beschreibung, sondern vielmehr durch die beiliegenden Ansprüche begrenzt ist. Zukünftig eingereichte Anwendungen, die Priorität zu dieser Anwendung beanspruchen, können den offenbarten Gegenstand auf andere Weise beanspruchen, und können im Allgemeinen einen Satz eines oder mehrerer Elemente enthalten, der unterschiedlich offenbart oder auf andere Weise hier gezeigt ist.