-
Die vorliegende Offenbarung liegt in dem Gebiet der Sicherheit und betrifft insbesondere virtuelle Maschinen und Techniken zum Unterstützen von Interrupts einer Computerverarbeitungseinheit (CPU: Computer Processing Unit).
-
Eine CPU mit einer Hypervisor- oder einer VMM-Unterstützung (VMM: Virtual Machine Monitor - Virtuelle-Maschine-Monitor) ist dazu in der Lage, mehrere virtuelle Maschinen (VMs - Virtual Machines) auszuführen. Jede VM kann ihre eigene Anwendung auf einer dedizierten Instanz eines Betriebssystems ausführen. Jede VM-Anwendung kann Interrupt-gesteuert sein, was bedeutet, dass Hardwareressourcen, die der VM-Anwendung zugewiesen sind (z. B. Schnittstellen, DMA (Direct Memory Access)-Kanäle oder andere Ressourcen), Interrupts an die Anwendung zur Anforderung von Zuwendungs-/Ressourcenzuordnung senden können. Es ist auch möglich, dass andere CPUs Software(SW)-Interrupts an eine VM-Anwendung senden können, die Teil einer Virtualisierungsressource (VR) sein kann, die die gleiche(n) Funktion(en) wie eine physische Ressource oder ein Knoten durchführt.
-
Ein Hypervisor oder VMM kann eine Computersoftware, Firmware oder Hardware sein, die virtuelle Maschinen erschafft/ablaufen lässt/ausführt. Ein Computer oder eine Verarbeitungsvorrichtung, auf dem/der ein Hypervisor eine oder mehrere virtuelle Maschinen ausführt, kann als eine Host-Maschine und jede VM als eine Gastmaschine bezeichnet werden. Der Hypervisor versorgt das Gastbetriebssystem mit einer virtuellen Betriebsplattform und verwaltet die Ausführung der Gastbetriebssysteme. Mehrere Instanzen einer Vielzahl von Betriebssystemen können die virtualisierten Hardwareressourcen teilen: zum Beispiel können Linux-, Windows- und MacOS-Instanzen alle auf einer einzigen physischen x86-Maschine ablaufen. Dies steht im Gegensatz zu einer Virtualisierung auf Betriebssystemebene, wo alle Instanzen (z. B. Container) einen einzigen Kernel teilen, obwohl die Gastbetriebssysteme im Nutzerraum abweichen können, wie etwa verschiedene Linux-Distributionen mit demselben Kernel.
-
Eine Aufgabe besteht insbesondere darin, bestehende Ansätze zu verbessern.
-
Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
-
Es wird ein System vorgeschlagen, das Folgendes umfasst:
- - eine Prozessorkomponente, die mehrere virtuelle Maschinen (VMs) und einen Virtuelle-Maschine-Monitor (VMM) / Hypervisor, der zum Steuern der mehreren VMs konfiguriert ist, umfasst,
- - wobei der Prozessor zu Folgendem konfiguriert ist:
- - Empfangen mehrerer Interrupt-Anforderungen, die einem oder mehreren von Folgendem entsprechen: dem VMM / Hypervisor oder den mehreren VMs; und
- - Bestimmen, ob eine Interrupt-Anforderung der mehreren Interrupt-Anforderungen an den VMM / Hypervisor und die mehreren VMs gewährt wird, basierend auf einem Satz vorbestimmter Kriterien.
-
Es ist eine Weiterbildung, dass der VMM / Hypervisor und die mehreren virtuellen Maschinen (VMs) jeweils ein Interrupt-Steuerregister (ICR) und ein Vorheriger-Kontext-und-Ausführungsinformationen(PCXI)-Register umfassen und wobei die Prozessorkomponente ferner dazu eingerichtet ist, einen momentanen Status von Interrupt-Prioritätsschemata, der jeweils dem VMM / Hypervisor und den mehreren VMs entspricht, als Teil des Satzes vorbestimmter Kriterien zu bestimmen.
-
Es ist eine Weiterbildung, dass der Satz vorbestimmter Kriterien eines oder mehrere von Folgendem umfasst: eine momentane Aufgabenpriorität, eine ausstehende Interrupt-Priorität oder ein Interrupt-Enable, assoziiert mit dem momentanen Status.
-
Es ist eine Weiterbildung, dass die Prozessorkomponente ferner ein Prozessorstatusregister, das ein erweitertes Prozessorstatuswort (ePSW) umfasst, und ein zusätzliches Register umfasst, das eine Interrupt-Steuerregister(ICR)-Konfigurationssteuerung (ICR-CTRL) umfasst, die mehrere Reaktionen auf verschiedene Interrupt-Zustände in Bezug auf den VMM / Hypervisor und die mehreren VMs umfasst.
-
Es ist eine Weiterbildung, dass die mehreren Interrupt-Anforderungen mehrere VM-Dienstanforderungen umfassen, die der einen oder den mehreren VM-Anwendungen entsprechen.
-
Es ist eine Weiterbildung, dass die Prozessorkomponente ferner dazu eingerichtet ist, eine oder mehrere Interrupt-Anforderungen der mehreren Interrupt-Anforderungen direkt an eine VM der mehreren VMs weiterzuleiten, während sich die VM gleichzeitig in Ausführung befindet, und wobei die VM ferner dazu eingerichtet ist, die eine oder die mehreren Interrupt-Anforderungen ohne einen VMM-Aufruf von dem VMM / Hypervisor zu empfangen.
-
Es ist eine Weiterbildung, dass die Prozessorkomponente ferner eine Entscheidungslogikkomponente umfasst, die dazu eingerichtet ist, basierend auf einer oder mehreren Bedingungen, die durch den VMM / Hypervisor konfiguriert werden, zu bestimmen, ob eine erste VM der mehreren VMs dazu eingerichtet ist, durch eine Dienstanforderung unterbrochen zu werden, die von einer zweiten VM der mehreren VMs empfangen wird.
-
Es ist eine Weiterbildung, dass der VMM / Hypervisor ferner dazu eingerichtet ist, die eine oder die mehreren Bedingungen für die Entscheidungslogikkomponente zu definieren, wobei die eine oder die mehreren Bedingungen Prioritätsschwellen umfassen, die Folgendes umfassen:
- - eine ausstehende Interrupt-Zahl, die jeweils mit dem VMM / Hypervisor und den mehreren VMs assoziiert ist,
- - eine momentane Zentrale-Verarbeitungseinheit(CPU)-Prioritätszahl, die jeweils mit dem VMM / Hypervisor und den mehreren VMs assoziiert ist,
- - eine oder mehrere zusätzliche Prioritätsschwellen zum Bestimmen, ob eine erste VM dazu in der Lage ist, direkt durch einen Interrupt unterbrochen zu werden, der einer zweiten VM zugeordnet ist, als Reaktion darauf, dass die Prozessorkomponente in einem VM-Modus arbeitet.
-
Auch wird eine Vorrichtung vorgeschlagen, die insbesondere umfasst:
- - eine Prozessorkomponente, die einen Speicher umfasst, der Anweisungen zum Ausführen von Vorgängen beinhaltet, mehrere Schnittstellen und einen Bus, der dazu eingerichtet ist, den Speicher und die mehreren Schnittstellen kommunikativ mit mehreren virtuellen Maschinen (VMs) und einem Virtuelle-Maschine-Monitor (VMM) / Hypervisor zu koppeln und Daten in Bezug auf mehrere Interrupt-Anforderungen der mehreren VMs und des VMM / Hypervisors an eine Entscheidungslogikkomponente der Prozessorkomponente zu kommunizieren;
- - wobei die Prozessorkomponente eingerichtet ist, zu bestimmen, ob eine Interrupt-Anforderung der mehreren Interrupt-Anforderungen an den oder von dem VMM / Hypervisor und an die/von den mehreren VMs gewährt wird, basierend auf einem Satz vorbestimmter Kriterien.
-
Es ist eine Weiterbildung, dass der Satz vorbestimmter Kriterien einen Betriebsmodus der Prozessorkomponente aus einem Satz von Modi umfasst, umfassend einen VM-Modus und einen VMM / Hypervisor-Modus, und wobei die Prozessorkomponente ferner eingerichtet ist, die Interrupt-Anforderung direkt zu gewähren und eine Interrupt-Dienstroutine (ISR) bei einer VM der mehreren VMs als Reaktion darauf, dass sie sich in dem VM-Modus befindet, auszulösen.
-
Es ist eine Weiterbildung, dass die mehreren Interrupt-Anforderungen mehrere gewinnende Dienstanforderungen umfassen, die sich aus unterschiedlichen Interrupt-Prioritätsschemata des VMM und der mehreren VMs ergeben und bei der die Prozessorkomponente ferner eingerichtet ist, eine ISR bei einer VM der mehreren VMs als Reaktion auf die Interrupt-Anforderung als eine gewinnende Dienstanforderung basierend auf ersten Prioritätsniveaus von Anwendungen, die durch die mehreren VMs ausgeführt werden, und zweiten Prioritätsniveaus der mehreren VMs, die durch den VMM / Hypervisor definiert werden, auszulösen.
-
Es ist eine Weiterbildung, dass ferner umfasst:
- - ein Prozessorstatusregister, das ein erweitertes Prozessorstatuswort (ePSW) umfasst, mit der Entscheidungslogikkomponente gekoppelt ist, und eingerichtet ist, das ePSW an die Entscheidungslogikkomponente zu liefern;
- - ein zusätzliches Register, das eine Interrupt-Steuerregister(ICR)-Konfigurationssteuerung (ICR-CTRL) umfasst, die mehrere Reaktionen auf verschiedene Interrupt-Bedingungen in Bezug auf den VMM / Hypervisor und die mehreren VMs umfasst, mit der Entscheidungslogikkomponente gekoppelt ist und eingerichtet ist, die ICR-CTRL an die Entscheidungslogikkomponente zu liefern.
-
Es ist eine Weiterbildung, dass das ePSW angibt, ob der VMM / Hypervisor und eine oder mehrere VMs der mehreren VMs sich in einem ausgelasteten Zustand befinden, und die eine oder die mehreren VMs in dem ausgelasteten Zustand identifiziert.
-
Es ist eine Weiterbildung, dass die Entscheidungslogik eingerichtet ist, basierend auf den verschiedenen Interrupt-Bedingungen, zu bestimmen, ob eine erste VMx der mehreren VMs eingerichtet ist, durch eine Dienstanforderung unterbrochen zu werden, die von einer zweiten VMy der mehreren VMs empfangen wird, und die Reaktion auf die verschiedenen Bedingungen basierend auf einem Vergleich mit Prioritätsschwellen zu bestimmen.
-
Es ist eine Weiterbildung, dass die Prioritätsschwellen Folgendes umfassen:
- - eine ausstehende Interrupt-Zahl, die mit dem VMM / Hypervisor bzw. den mehreren VMs assoziiert ist,
- - eine momentane Zentrale-Verarbeitungseinheit(CPU)-Prioritätszahl, die mit dem VMM / Hypervisor bzw. den mehreren VMs assoziiert ist,
- - eine oder mehrere zusätzliche Prioritätsschwellen zum Bestimmen, ob eine erste VM dazu in der Lage ist, direkt durch einen Interrupt unterbrochen zu werden, der einer zweiten VM zugeordnet ist, als Reaktion darauf, dass die Prozessorkomponente in einem VM-Modus oder einem VMM / Hypervisor-Betriebsmodus arbeitet.
-
Auch wird ein Verfahren vorgeschlagen, das Folgendes umfasst:
- - Empfangen eines Interrupts über einen oder mehrere Prozessoren, der einem oder mehreren von Folgendem entspricht: einem VMM / Hypervisor oder einer Mehrzahl von VMs;
- - Erzeugen einer Bestimmung über den einen oder die mehreren Prozessoren, ob der Interrupt an den VMM / Hypervisor und die mehreren VMs gewährt wird, basierend auf einem Satz vorbestimmter Kriterien;
- - Kommunizieren des Interrupts basierend auf der Bestimmung über einen Bus, der kommunikativ mit dem einen oder den mehreren Prozessoren, dem VMM / Hypervisor und den Mehrzahl von VMs gekoppelt ist.
-
Es ist eine Weiterbildung, dass die Operationen ferner Folgendes umfassen:
- - Bestimmen eines momentanen Status der Interrupt-Prioritätsschemata, der dem VMM / Hypervisor und den mehreren VMs entspricht, basierend auf Informationen von Zentrale-Verarbeitungseinheit(CPU)-Interrupt-Steuerregistern (ICUs) und Vorheriger-Kontext-und-Ausführungsinformationen(PCXIs)-Registern des VMM / Hypervisors und den mehreren virtuellen Maschinen (VMs).
-
Es ist eine Weiterbildung, dass die Operationen ferner Folgendes umfassen:
- - als Reaktion auf den Betrieb in einem VM-Modus anstelle eines VMM/Hypervisor-Modus, direktes Weiterleiten des Interrupts über den Bus an eine VM der mehreren VMs, während sich die VM gleichzeitig in Ausführung befindet, ohne einen VMM-Aufruf von dem VMM / Hypervisor.
-
Es ist eine Weiterbildung, dass die Operationen ferner Folgendes umfassen:
- - Bestimmen über den einen oder die mehreren Prozessoren, ob eine erste VM der mehreren VMs eingerichtet ist, durch eine Dienstanforderung unterbrochen zu werden, die als der Interrupt von einer zweiten VM der mehreren VMs empfangen wird, basierend auf einer oder mehreren Bedingungen, die durch den VMM / Hypervisor konfiguriert werden.
-
Es ist eine Weiterbildung, dass die Operationen ferner Folgendes umfassen:
- - Definieren der einen oder der mehreren Bedingungen, die Prioritätsschwellen beinhalten, die Folgendes umfassen:
- - eine ausstehende Interrupt-Zahl, die mit dem VMM / Hypervisor bzw. den mehreren VMs assoziiert ist,
- - eine momentane Zentrale-Verarbeitungseinheit(CPU)-Prioritätszahl, die mit dem VMM / Hypervisor bzw. den mehreren VMs assoziiert ist,
- - eine oder mehrere zusätzliche Prioritätsschwellen zum Bestimmen, ob eine erste VM dazu in der Lage ist, direkt durch einen Interrupt unterbrochen zu werden, der einer zweiten VM zugeordnet ist, als Reaktion darauf, dass die Prozessorkomponente in einem VM-Modus arbeitet.
-
Die beschriebenen Eigenschaften, Merkmale und Vorteile sowie die Art und Weise, wie diese erreicht werden, werden weiter ausgeführt im Zusammenhang mit der folgenden schematischen Beschreibung von Ausführungsbeispielen, die im Zusammenhang mit den Zeichnungen näher erläutert werden. Dabei können zur Übersichtlichkeit gleiche oder gleichwirkende Elemente mit gleichen Bezugszeichen versehen sein.
- 1 ist ein Blockdiagramm, das Komponenten einer Netzwerkvorrichtung gemäß einem/einer oder mehreren Aspekten oder Ausführungsformen, die hier beschrieben sind, veranschaulicht.
- 2 ist ein Blockdiagramm, das eine Interrupt-Steuereinheit (ICU: Interrupt Control Unit) für eine Computerverarbeitungseinheit(CPU)-Schnittstelle mit s-Hypervisor/Virtuelle-Maschine-Monitor (VMM) gemäß verschiedenen hier beschriebenen Aspekten oder Ausführungsformen veranschaulicht.
- 3 ist ein anderes Blockdiagramm einer CPU gemäß verschiedenen hier beschriebenen Aspekten oder Ausführungsformen.
- 4 ist ein anderes Blockdiagramm einer CPU-Konfiguration von Komponenten für Interrupts mit Hypervisor/VMM-Unterstützung gemäß verschiedenen hier beschriebenen Aspekten oder Ausführungsformen.
- 5 ist ein anderes Blockdiagramm der CPU mit erweiterten Komponentendaten für Interrupts mit Hypervisor/VMM-Unterstützung gemäß verschiedenen hier beschriebenen Aspekten oder Ausführungsformen.
- 6 ist ein anderes Blockdiagramm von CPU-Eingaben und -Ausgaben von CPU-Komponenten für Interrupts mit Hypervisor/VMM-Unterstützung gemäß verschiedenen hier beschriebenen Aspekten oder Ausführungsformen.
- 7 ist ein Beispielprozessfluss zum Unterstützen von Interrupts innerhalb einer CPU mit einem Hypervisor gemäß verschiedenen hier beschriebenen Aspekten oder Ausführungsformen.
-
Die vorliegende Offenbarung wird nun unter Bezugnahme auf die beigefügten Zeichnungsfiguren beschrieben, wobei durchweg gleiche Bezugsziffern verwendet werden, um auf gleiche Elemente Bezug zu nehmen, und wobei die veranschaulichten Strukturen und Vorrichtungen nicht notwendigerweise maßstabsgetreu gezeichnet sind. So wie sie hier verwendet werden, ist es beabsichtigt, dass sich Ausdrücke wie „Komponente“, „System“, „Schnittstelle“ und dergleichen auf eine computerbezogene Entität, Hardware, Software (z. B. bei Ausführung) und/oder Firmware beziehen. Eine Komponente kann z. B. ein Prozessor, ein auf einem Prozessor ablaufender Prozess, eine Steuerung, ein Objekt, ein ausführbares Programm, ein Programm, eine Speichervorrichtung und/oder ein Computer mit einer Verarbeitungsvorrichtung sein. Zur Veranschaulichung können eine auf einem Server ablaufende Anwendung und der Server auch eine Komponente sein. Eine oder mehrere Komponenten können innerhalb eines Prozesses residieren und eine Komponente kann auf einem Computer lokalisiert und/oder auf zwei oder mehr Computern verteilt sein. Ein Satz von Elementen oder ein Satz von anderen Komponenten kann hier beschrieben werden, wobei der Ausdruck „Satz“ als „ein oder mehr“ interpretiert werden kann.
-
Ferner können diese Komponenten zum Beispiel von verschiedenen computerlesbaren Speichermedien ausgeführt werden, die verschiedene darauf gespeicherte Datenstrukturen aufweisen, wie etwa mit einem Modul. Die Komponenten können über lokale und/oder ferne Prozesse kommunizieren, wie etwa gemäß einem Signal, das ein oder mehrere Datenpakete aufweist (z. B. Daten von einer Komponente, die mit einer anderen Komponente in einem lokalen System, einem verteilten System und/oder über ein Netzwerk hinweg, wie etwa dem Internet, einem lokalen Netzwerk, einem Weitbereichsnetzwerk oder einem ähnlichen Netzwerk mit anderen Systemen über das Signal interagiert). Eine Komponente kann auch als eine Maschine bezeichnet werden.
-
Eine Komponente kann, als ein weiteres Beispiel, eine Einrichtung mit spezifischer Funktionalität sein, die von mechanischen/maschinellen Teilen bereitgestellt wird, die von einer elektrischen oder elektronischen Schaltungsanordnung betrieben werden, wobei die elektrische oder elektronische Schaltungsanordnung durch eine Software-Anwendung oder eine Firmware-Anwendung betrieben werden kann, die durch einen oder mehrere Prozessoren ausgeführt werden. Der eine oder die mehreren Prozessoren können bezüglich der Einrichtung intern oder extern sein und können wenigstens einen Teil der Software- oder der Firmware-Anwendung ausführen. Als ein noch weiteres Beispiel kann eine Komponente eine Einrichtung sein, die spezifische Funktionalität mittels elektronischer Komponenten ohne mechanische Teile bereitstellt; die elektronischen Komponenten können in sich einen oder mehrere Prozessoren beinhalten, um Software und/oder Firmware auszuführen, die wenigstens teilweise die Funktionalität der elektronischen Komponenten verleiht/verleihen.
-
Die Verwendung des Wortes beispielhaft soll Konzepte auf eine konkrete Weise präsentieren. So wie in dieser Anmeldung verwendet, soll der Ausdruck „oder“ vielmehr ein einschließendes „oder“ als ein ausschließendes „oder“ bedeuten. Das heißt, dass „X setzt A oder B ein“ jegliche der natürlichen einschließenden Permutationen bedeuten soll, soweit nichts anderes spezifiziert wird oder anhand des Kontextes klar ist. Das heißt, dass, falls X A einsetzt; X B einsetzt; oder X sowohl A als auch B einsetzt, „X setzt A oder B ein“ dann unter beliebigen der vorhergehenden Fälle erfüllt wird. Außerdem sollten die Artikel „ein“ und „eine“, wie in dieser Anmeldung und den angehängten Ansprüchen verwendet, im Allgemeinen mit der Bedeutung „ein oder mehr“ aufgefasst werden, es sei denn, anderes wird spezifiziert oder ist anhand des Kontextes klar auf eine Singularform ausgerichtet. Des Weiteren sollen in dem Ausmaß, in dem die Ausdrücke „beinhalten“, „beinhaltet“, „aufweisen“, „aufweist“, „mit“ oder Varianten davon sowohl in der ausführlichen Beschreibung als auch den Ansprüchen verwendet werden, derartige Ausdrücke auf eine Weise ähnlich dem Ausdruck „umfassend“ einschließend sein.
-
Wie hier verwendet, kann der Begriff „Schaltungsanordnung“ auf einen anwendungsspezifischen integrierten Schaltkreis (ASIC), einen elektronischen Schaltkreis, einen Prozessor (geteilt, dediziert oder Gruppe) und/oder einen Speicher (geteilt, dediziert oder Gruppe) verweisen, Teil davon sein oder beinhalten, welche auf einem oder mehreren Software- oder Firmware-Programmen, einem Kombinationslogikschaltkreis und/oder anderen geeigneten Hardwarekomponenten, die die beschriebene Funktionalität bereitstellen, ausgeführt werden. Bei manchen Ausführungsformen kann die Schaltungsanordnung in einem oder mehreren Software- oder Firmware-Modulen implementiert sein, oder können Funktionen, die mit der Schaltungsanordnung assoziiert sind, dadurch implementiert sein. Bei manchen Ausführungsformen kann eine Schaltungsanordnung eine Logik beinhalten, die wenigstens teilweise in Hardware operabel ist.
-
Hypervisoren und virtuelle Maschinen können zum Verbessern der Effizienz einer Nutzung von größeren Recheninfrastrukturen arbeiten, ob in der Form eines ursprünglichen IBM 360 oder gegenwärtig in der Form eines x86, einer CPU, eines/einer Server-Racks/Bank oder einer anderen ähnlichen Verarbeitungsvorrichtung, die zum Beispiel ein Teil einer Anwendung oder einer Software sein kann, um allgemein die Nutzungseffizienz einer Hardware zu verbessern. Es kann hier austauschbar auf einen Hypervisor oder einen Virtuelle-Maschine-Monitor (VMM) verwiesen werden, wobei beide als eine Computersoftware, -firmware oder -hardware betrachtet werden können, die virtuelle Maschinen (VMs) erschafft und ausführt. Ein Computer, ein Prozess oder eine Verarbeitungsvorrichtung, auf dem/der ein Hypervisor eine oder mehrere VMs ausführt, kann als eine Host-Maschine bezeichnet werden und jede VM kann als eine Gastmaschine bezeichnet werden. Das Einsetzen gefertigter Technologien wie dieser (z. B. von Siliziumtechnologien) in Harte-Echtzeit-Systeme mit anpassbaren Interrupts und Interrupt-Reaktionszeiten, die nun viel bedeutender als je zuvor sind, stellt ferner eine Möglichkeit für verbesserte Effizienzen in Interrupt-Schnittstellen mit VMMs und insbesondere innerhalb der Interrupt-Kommunikation-Verknüpfung oder -Schnittstelle innerhalb eines CPU-Package oder einer Verarbeitungsvorrichtung bereit.
-
Zum Beispiel ist es in dem Fall herkömmlicher Servertechnikumgebungen, bei denen Vorgänge auf eine vollständigere und perfektere Virtualisierung abzielen können, falls die Verarbeitungsvorgänge vor dem Zurückkehren zu einem Gastbetriebssystem zur Ressourcenunterstützung einen oder mehrere Prozesse in dem Hypervisor verfolgen oder emulieren, nicht so schädlich, das Gastbetriebssystem zu stören/modifizieren. Insbesondere hinsichtlich Hardware, Echtzeit, Sicherheitsüberlegungen (z. B. Automobilsicherheit oder dergleichen) kann ein gewisses Ausmaß einer Paravirtualisierung (d. h. Ändern des öffentlichen/Gastbetriebssystems, um Sicherheitseigenschaften aufrechtzuerhalten und Echtzeiteigenschaften aufrechtzuerhalten) ermöglicht werden. Eine Paravirtualisierung kann eine Verbesserung der Virtualisierungstechnologie sein, bei der das Gastbetriebssystem innerhalb einer VM rekompiliert werden kann und dynamisch ermöglichen kann, dass ein Interrupt-Schnittstelle-System zu der VM zum Beispiel von der zugrundeliegenden Hardware abweicht.
-
In der Hardware kann mit bestimmten vorliegenden Aspekten/Ausführungsformen ein Interrupt basierend auf dynamischen und Echtzeitressourcenbedingungen in das Gastbetriebssystem gelenkt/geleitet werden. Anstatt alle Interrupts einer Anwendung oder einer Aufgabe, die zur Verarbeitung an den Hypervisor oder den VMM zu leiten sind, vorzukonfigurieren, kann eine Entscheidungslogik oder ein Satz von Entscheidungsprozessen konfiguriert werden, die/der ermöglicht, dass der VMM und die assoziierte Software entscheiden, was mit dem/den Interrupt(s) zu tun ist und zu welchen Ressourcen hin diese zu leiten sind.
-
In bestimmten Aspekten/Ausführungsformen kann eine CPU so konfiguriert sein, dass sie den Status aller Interrupt-Komponenten wahrnimmt, einschließlich des VMM und einer oder mehrerer VMs parallel oder aller zusammen gleichzeitig zu einer beliebigen Zeit. Diese VMs und der Hypervisor/VMM können durch die Verarbeitungskomponenten der CPU, die sich auf demselben Prozessor-Package, Kapselungskern oder derselben Vorrichtung befinden, gesteuert, verwaltet oder aktiviert werden. Die CPU kann in einem VMM-Modus oder einem VMx-Modus arbeiten, wobei x eine beliebige positive ganze Zahl und eine Funktion der Anzahl an Gastmaschinen oder VMs, die durch die CPU gehostet werden, sein kann. Falls die CPU zum Beispiel in dem VMM-Modus oder in einem VMx-Modus arbeitet, weiß die CPU parallel (oder gleichzeitig) mittels eines Interrupt-Busses für jede VM/Gastmaschine und den VMM über (einen) beliebige(n) ausstehende(n) Interrupt(s) mit höchster Priorität für jede/jeden VM und VMM Bescheid.
-
In Abhängigkeit von dem Betriebsmodus kann die CPU oder die Prozessorkomponente der CPU die Entscheidung treffen, einen neuen Interrupt direkt an eine beliebige gegebene oder anvisierte VM, wie in einem VM-Modus, weiterzugeben, oder in einen VMM-Modus zu wechseln und die Entscheidungstreffung oder Interrupt-Prozesse zum Beispiel an den VMM für die VM zu delegieren. Dieser neue Interrupt kann von einer VM der CPU zu einer anderen VM der CPU, zum Beispiel einer anderen intern gesteuerten Komponente der CPU, sowie von zum Beispiel einer externen Komponente einer Vorrichtungsanwendung sein. Zusätzliche Aspekte, Ausführungsformen oder Einzelheiten der Offenbarung sind ferner unten unter Bezugnahme auf die Figuren ausführlich beschrieben.
-
1 ist ein Blockdiagramm, das Komponenten eines Systems oder einer Netzwerkvorrichtung 100 gemäß manchen beispielhaften Ausführungsformen veranschaulicht, das/die dazu in der Lage ist, Anweisungen von einem maschinenlesbaren oder computerlesbaren Medium (z. B. einem maschinenlesbaren Speichermedium) zu lesen und einen/eine oder mehrere beliebige der Funktionen, Vorgänge, Prozesse oder Methodologien, die hier besprochen sind, durchzuführen. Eine oder mehrere Komponenten des Systems oder der Vorrichtung 100 können mit, in oder als Teil von einer Netzwerkvorrichtung oder einem -system, wie etwa einer Mobilvorrichtung, einer Drahtlosvorrichtung, einer Netzwerkvorrichtung/-komponente (z. B. einem Netzwerkzugangsknoten, einem Netzwerkorchestrator, einem Netzwerkserver, einem Rack-Server, einer/einem Netzwerksteuerung/-prozessor, einer Netzwerkdatenbank, einer CPU oder dergleichen), eingesetzt oder genutzt werden. Speziell veranschaulicht 1 eine schematische Repräsentation von Hardwareressourcen 101, die zur Verwendung innerhalb der Netzwerkvorrichtung oder eines Systems 100 konfiguriert sein können, die/das einen oder mehrere Prozessoren (oder Prozessorkerne) 110, eine oder mehrere Speicher-/Speicherungsvorrichtungen 120 und eine oder mehrere Kommunikationsressourcen 130 beinhaltet, wobei jeder/jede davon über eine Kommunikationsverknüpfung (z. B. einen Bus 140) oder eine andere Verbindung (z. B. eine optische Verknüpfung, eine drahtlose Verbindung, eine drahtgebundene Verbindung oder eine andere ähnliche Kommunikationsverbindung) kommunikativ gekoppelt sein kann.
-
Für Ausführungsformen, bei denen eine Knotenvirtualisierung genutzt werden kann, wie in einem Netzwerkfunktionsvirtualisierung(NFV)-Vorgang, kann ein Hypervisor 102 (oder ein VMM) ausgeführt werden, um eine Ausführungsumgebung für ein oder mehrere Netzwerk-Slices/Sub-Slices bereitzustellen, um die Hardwareressourcen 101 zu nutzen. Ein solcher Hypervisor 102 kann zum Beispiel einen Virtuelle-Maschine-Monitor (VMM) umfassen, der eine Computersoftware, Firmware- oder HardwareRessourcen umfasst, die virtuelle Maschinen erschaffen oder darauf ablaufen, um einen Computer/eine Verarbeitungsvorrichtung zu betreiben. \Virtualisierung, wie hier verwendet, kann zum Beispiel auf die Entfernung einer Funktion von einer Vorrichtung und Zuweisen oder Verschieben der Funktion zu einer anderen Vorrichtung in einem Netzwerk entweder als Software, Firmware, spezialisierte Hardware oder eine Kombination zum Durchführen der ähnlichen oder gleichen Funktion als eine andere Komponente an einer anderen Stelle in der Vorrichtung, dem System oder dem Netzwerk verweisen.
-
Die Prozessoren 110 (z. B. eine CPU, ein RISC-Prozessor (RISC: Reduced Instruction Set Computing - Rechner mit reduziertem Befehlssatz), ein CISC-Prozessor (CISC: Complex Instruction Set Computing - Rechner mit komplexem Befehlssatz), eine Grafikverarbeitungseinheit (GPU: Graphics Processing Unit), ein digitaler Signalprozessor (DSP), wie etwa ein Basisbandprozessor, ein anwendungsspezifischer integrierter Schaltkreis (ASIC: Application Specific Integrated Circuit), ein Hochfrequenz-integrierter-Schaltkreis (RFIC: Radio-Frequency Integrated Circuit), ein anderer Prozessor oder eine beliebige geeignete Kombination davon) können zum Beispiel eine beliebige Anzahl an Verarbeitungskomponenten, wie etwa einen Prozessor 112 und einen Prozessor 114, beinhalten. Die Speicher-/Speicherungsvorrichtungen 110 können einen Hauptspeicher, Plattenspeicherung oder eine beliebige Kombination davon beinhalten.
-
Die Kommunikationsressourcen 130 können Zwischenverbindungs- und/oder Netzwerkschnittstellenkomponenten oder andere geeignete Vorrichtungen zum Kommunizieren mit einer oder mehreren Peripherievorrichtungen 104 oder einer oder mehreren Datenbanken 106 über ein Netzwerk 108 beinhalten. Zum Beispiel können die Kommunikationsressourcen 130 verdrahtete Kommunikationskomponenten (z. B. zum Koppeln über einen Universal Serial Bus (USB)), zellulare Kommunikationskomponenten, NFC-Komponenten (NFC: Near Field Communication - Nahfeldkommunikation), Bluetooth®-Komponenten (z. B. Bluetooth®-Low-Energy), Wi-Fi®(Wi-Fi/WiFi)-Komponenten und andere Kommunikationskomponenten beinhalten.
-
Anweisungen 150 können Software, ein Programm, eine Anwendung, eine Applet, eine App oder einen anderen ausführbaren Code zum Bewirken umfassen, dass wenigstens irgendeiner der Prozessoren 110 eine oder mehrere beliebige der hier besprochenen Methodologien durchführt. Die Anweisungen 150 können vollständig oder teilweise innerhalb der Prozessoren 110 (z. B. innerhalb des Cache-Speichers des Prozessors) und/oder der Speicher-/Speicherungsvorrichtungen 110 oder einer beliebigen geeigneten Kombination davon liegen. Des Weiteren kann ein beliebiger Teil der Anweisungen 150 an die Hardwareressourcen 101 von einer beliebigen Kombination der Peripherievorrichtungen 104 und/oder der Datenbanken 106 übertragen werden. Entsprechend sind der Speicher von Prozessoren 110, die Speicher-/Speicherungsvorrichtungen 110, die Peripherievorrichtungen 104 und die Datenbanken 106 Beispiele für computerlesbare und maschinenlesbare Medien.
-
Bei einem Aspekt kann die Netzwerkvorrichtung 100 (ein) Signal(e) von Drahtlosvorrichtungen, wie etwa APs, Zugangsendgeräten, Drahtlos-Ports und -Routern oder dergleichen, durch einen Satz von L Antennen 1201-L empfangen und/oder an diese senden, die gemäß einer/einem oder mehreren Ausführungsformen oder Aspekten, die hier beschrieben sind, konfiguriert sein können. Bei einem Beispiel können die Antennen 120 als Teil einer Kommunikationsplattform 130 implementiert sein, die wiederum elektronische Komponenten und eine assoziierte Schaltungsanordnung und/oder andere Mittel umfassen kann, die eine Verarbeitung und Manipulation eines oder mehrerer empfangener Signale und eines oder mehrerer zu übertragender Signale bereitstellen. Die Antennen 120 können die verschiedenen Antennenelemente umfassen, die die unterschiedlichen hier offenbarten Aspekte oder Ausführungsformen umsetzen.
-
Bei einem Aspekt kann/können die Kommunikationsplattform/-ressourcen 130 elektronische Komponenten mit einer assoziierten Schaltungsanordnung beinhalten, die eine Verarbeitung und Manipulation eines oder mehrerer empfangener Signale und eines oder mehrerer zu übertragender anderer Signale bereitstellen. Die Kommunikationsplattform 130 kann ferner einen Empfänger/Sender oder einen Sendeempfänger 116 umfassen, der Signale übertragen und empfangen kann und/oder einen oder mehrere Verarbeitungsvorgänge an solchen Signalen (z. B. eine Umsetzung von analog zu digital beim Empfangen, eine Umsetzung von digital zu analog beim Übertragen usw.) durchführen kann. Zusätzlich kann der Sendeempfänger 116 einen einzigen Datenstrom in mehrere parallele Datenströme aufteilen oder den umgekehrten Vorgang durchführen.
-
Außerdem kann die Kommunikationsvorrichtung 100 eine Anzeigeschnittstelle 122 beinhalten, die Funktionen anzeigen kann, die eine Funktionalität der Vorrichtung 100 steuern, oder Betriebsbedingungen davon aufzeigen kann. Außerdem kann die Anzeigeschnittstelle 122 einen Bildschirm zum Übermitteln von Informationen an einen Endnutzer beinhalten. Bei einem Aspekt kann die Anzeigeschnittstelle 122 eine Flüssigkristallanzeige, ein Plasmafeld, eine monolithische dünnfilmbasierte elektrochromische Anzeige usw. sein. Zudem kann die Anzeigeschnittstelle 122 eine Komponente (z. B. einen Lautsprecher) beinhalten, die eine Kommunikation von auditiven Zeichen ermöglicht, die auch in Verbindung mit Nachrichten eingesetzt werden kann, die Betriebsanweisungen an einen Endnutzer übermitteln. Die Anzeigeschnittstelle 122 kann auch eine Dateneingabe (z. B. durch ein verknüpftes Tastenfeld oder durch Berührungsgesten) ermöglichen, die bewirken kann, dass eine Zugriffsausrüstung und/oder Software 100 externe Befehle (z. B. einen Neustartvorgang) empfängt.
-
Eine Breitbandnetzwerkschnittstelle 124 ermöglicht eine Verbindung der Netzwerkvorrichtung 100 zu dem Netzwerk 108, das eine oder mehrere Netzwerk-/zellulare Technologien beinhalten kann, durch (eine) (nicht gezeigte) Backhaul-Verknüpfung(en), die einen eingehenden und ausgehenden Datenfluss ermöglichen. Die Breitbandnetzwerkschnittstelle 124 kann intern oder extern zu der Netzwerkvorrichtung 100 sein und kann die Anzeigeschnittstelle 122 für eine Endnutzerinteraktion und Statusinformationslieferung nutzen.
-
Ein oder mehrere Prozessoren 110 können einen oder mehrere Prozessoren 112,114 beinhalten, die funktional mit der/den Kommunikationsplattform/-ressourcen 130 verbunden sein können und Operationen an Daten (z. B. Symbolen, Bits oder Chips) zum Multiplexen/ Demultiplexen ermöglichen können, wie etwa Bewirken von direkten und inversen schnellen Fourier-Transformationen, Auswahl von Modulationsraten, Auswahl von Datenpaketformaten, Inter-Paket-Zeiten usw. Zudem können ein oder mehrere Prozessoren 110 funktional durch einen Daten-, System- oder einen Adressenbus 140 mit der Anzeigeschnittstelle 122 und der Breitbandnetzwerkschnittstelle 124 verbunden sein, um jeder solcher Komponenten eine Funktionalität wenigstens teilweise zu verleihen.
-
Bei einem anderen Beispiel kann eine Multiplexer/Demultiplexer(Mux/Demux)-Einheit 117 mit dem Sendeempfänger 116 gekoppelt sein. Die Mux/Demux-Einheit 117 kann zum Beispiel eine Manipulation des Signals im Zeit- und Frequenzraum ermöglichen. Zusätzlich oder alternativ dazu kann die Mux/Demux-Einheit 117 Informationen (z. B. Daten/Verkehr, Steuerung/Signalisierung usw.) gemäß verschiedenen Multiplexschemata, wie etwa Zeitmultiplexen (TDM: Time Division Multiplexing), Frequenzmultiplexen (FDM: Frequency Division Multiplexing), orthogonalem Frequenzmultiplexen)(OFDM: Orthogonal Frequency Division Multiplexing), Codemultiplexen (CDM: Code Division Multiplexing), Raummultiplexen (SDM: Space Division Multiplexing) oder dergleichen, multiplexen. Außerdem kann die Mux/Demux-Einheit 117 Informationen gemäß im Wesentlichen einem beliebigen Code, der allgemein in der Technik bekannt ist, wie etwa Hadamard-Walsh-Codes, Baker-Codes, Kasami-Codes, Polyphasencodes usw., verwürfeln und verteilen.
-
Bei einem weiteren Beispiel kann eine Modulator/Demodulator (Mod/Demod)-Einheit 118, die innerhalb der Kommunikationsplattform 130 implementiert ist, Informationen gemäß mehreren Modulationstechniken, wie etwa Frequenzmodulation, Amplitudenmodulation (z. B. L-näre Quadraturamplitudenmodulation (L-QAM) usw.) Phasenumtastung (PSK: Phase-Shift Keying) und dergleichen, modulieren. Ferner kann die Kommunikationsplattform 130 auch ein Codierer/Decodierer(Codec)-Modul 119 beinhalten, das das Decodieren eines oder mehrerer empfangener Signale und/oder das Codieren eines oder mehrerer zu übermittelnder Signale ermöglicht.
-
Gemäß einem anderen Aspekt kann eine/ein Drahtlosendgerät/Netzwerkvorrichtung oder -system 100 einen Prozessor 110 (z. B. 112, 114) beinhalten, der dazu konfiguriert ist, einer im Wesentlichen beliebigen elektronischen Komponente, die durch die/das Netzwerkvorrichtung/-system 100 genutzt wird, eine Funktionalität wenigstens teilweise zu verleihen. Wie weiter in dem System 100 gezeigt ist, kann eine Leistungsversorgung 125 mit einem Stromnetz verbunden werden und einen oder mehrere Transformatoren beinhalten, um einen Leistungspegel zu erreichen, bei dem verschiedene Komponenten und/oder eine Schaltungsanordnung, die mit dem Drahtlosendgerät 100 verbunden ist, betrieben werden können. Bei einem Beispiel kann die Leistungsversorgung 125 einen wiederaufladbaren Leistungsmechanismus beinhalten, um einen fortgesetzten Betrieb des Drahtlosendgerätes 100 in dem Fall zu ermöglichen, dass das Drahtlosendgerät 100 von dem Stromnetz getrennt wird, dass das Stromnetz nicht funktioniert usw.
-
Bei einem weiteren Aspekt kann (können) der (die) Prozessor(en) 110 funktional mit der Kommunikationsplattform 130 verbunden sein und kann (können) verschiedene Operationen an Daten (z. B. Symbolen, Bits, Chips usw.) ermöglichen, die unter anderem Bewirken von direkten und inversen schnellen Fourier-Transformationen, Auswahl von Modulationsraten, Auswahl von Datenpaketformaten, Inter-Paket-Zeiten usw. beinhalten können. Bei einem anderen Beispiel kann (können) der (die) Prozessor(en) 110 funktional mittels eines Daten- oder Systembusses 140 (z. B. eines drahtlosen PCIE oder dergleichen) mit beliebigen anderen Komponenten oder einer beliebigen Schaltungsanordnung verbunden sein, die in dem System 100 nicht gezeigt sind, um jeder von wenigstens solchen Komponenten teilweise eine Funktionalität zu verleihen, wie etwa durch die hier offenbarten Antennensysteme.
-
Wie zusätzlich veranschaulicht ist, kann ein Speicher 120 oder eine Datenbank 106 durch das/die Drahtlosendgerät/-vorrichtung/-system 100 verwendet werden, um Datenstrukturen, Codeanweisungen 150 und Programmmodule, System- oder Vorrichtungsinformationen, Codesequenzen zum Verwürfeln, Aufteilen und zur Pilotübertragung, eine Standortinformationsspeicherung, einen oder mehrere bestimmte Verzögerungsversätze, Durch-die-Luft-Propagation-Modelle und so weiter zu speichern. Ein oder mehrere Prozessoren 110 können mit dem Speicher 120 oder der Datenbank 106 gekoppelt sein, um Informationen zu speichern und abzurufen, die zum Betreiben und/oder zum Verleihen einer Funktionalität für die Kommunikationsplattform 130 und/oder beliebige andere Komponenten des Drahtlosendgerätes 100 notwendig sind.
-
Ferner können die oben mit der Vorrichtung 100 beschriebenen Antennensysteme auch zum Beispiel dazu konfiguriert sein, in einem weiten Bereich von Frequenzen in einem Hochbandfrequenzbereich zu arbeiten, zusätzlich Peer-to-Peer(z. B. Mobil-zu-Mobil)-ad-hoc-Netzwerksysteme beinhalten, die oft nicht gepaarte nicht lizenzierte Spektren, 102.xx-Wireless-LAN, BLUETOOTH und beliebige andere kurz- oder langreichweitige Drahtlosfrequenzbereiche und Kommunikationstechniken verwenden. Die hier offenbarten Schmalbandantennenelemente, wie etwa Antennenresonanzsysteme offenbarter Vorrichtungen, können zum Beispiel auch dazu konfiguriert sein, auch bei anderen Frequenzbereichen zu arbeiten.
-
Bei anderen Beispielen können die hier offenbarten Komponenten dazu betrieben werden, drahtlos mit anderen Komponenten, wie etwa der Anzeigeschnittstelle 122 als eine Drahtlosvorrichtung, oder mit anderen Drahtlosschnittstellen, wie etwa zum Beispiel einer USB-Drahtlosvorrichtung, zu kommunizieren. Zum Beispiel kann eine USB-Drahtlosvorrichtung innerhalb eines Frequenzbereichs kommunizieren. Außerdem können offenbarten Antennensysteme dazu konfiguriert sein, mit anderen Drahtlosverbindungen, -komponenten, -schnittstellen oder -vorrichtungen zu kommunizieren, um eine Kommunikationskopplung für drahtlose Komponente-zu-Komponente-Kommunikationen bereitzustellen. Zum Beispiel kann eine PCB-zu-PCB-Schnittstelle durch die Hochbandantennensysteme sowie Mikro-Millimeterwellen-Kommunikationen zwischen einer oder mehreren internen oder externen Komponenten ermöglicht werden. Andere Kommunikationsschnittstellen können durch die offenbarten Antennenelemente ebenfalls ermöglicht werden, wie etwa IoT-zu-IoT-Komponenten (IoT: Internet of Things - Internet der Dinge), tragbare Komponenten, Mobil-zu-Mobil, eine Netzwerkbasisstation (z. B. eine Makrozellennetzwerkvorrichtung, eine Femtozellenvorrichtung, eine Picozellenvorrichtung oder andere Netzwerkvorrichtungen) oder beliebige Kombinationen davon, um über ein oder mehrere der Antennenelemente zu kommunizieren, wie etwa zum Beispiel über das vorliegende Antennensystem oder die vorliegenden Vorrichtungen. Zusätzliche andere Beispiele sind ebenfalls vorgesehen, durch die die hier offenbarten Antennensysteme in unterschiedlichen Frequenzbereichen sowie einer Kommunikation betrieben werden können und Kommunikationen mit, oder zwischen, einer oder mehreren Drahtloskomponenten oder -vorrichtungen ermöglichen können. Zum Beispiel können ISM-Funkbänder (ISM: Industrial, Scientific and Medical - Industrie, Wissenschaft und Medizin), Radarbandbreiten oder andere Bereiche eines Frequenzspektrums ebenfalls für Kommunikationen durch die Antennensysteme, die offenbart werden, ermöglicht werden.
-
Die Komponenten der/des Netzwerkvorrichtung/-systems 100 oder eine assoziierte Interrupt-Schnittstelle können in einem physischen Knoten oder getrennten physischen Knoten implementiert sein, welche Komponenten oder Funktionen zum Lesen und Ausführen von Anweisungen aus einem maschinenlesbaren oder computerlesbaren Medium (z. B. einem nichtflüchtigen maschinenlesbaren Speichermedium) beinhalten. Bei manchen Ausführungsformen wird eine Netzwerkfunktionsvirtualisierung (NFV) genutzt, um eine oder mehrere beliebige beschriebene Verarbeitungs- oder Interrupt-Funktionen mittels ausführbarer Anweisungen zu virtualisieren, die in einem oder mehreren computerlesbaren Speichermedien gespeichert sind (unten ausführlicher beschrieben).
-
NFV-Architekturen und -Infrastrukturen können verwendet werden, um eine oder mehrere Netzwerkfunktionen, die alternativ durch angemessene Hardware durchgeführt werden, auf physischen Ressourcen/Komponenten zu virtualisieren, die z. B. eine Kombination von für die Industrie standardmäßiger Serverhardware, Speicherhardware oder Schalter umfassen. Mit anderen Worten können NFV-Komponenten/- Vorrichtungen/-Systeme verwendet werden, um virtuelle oder rekonfigurierbare Implementierungen einer oder mehrerer Interrupt-Komponenten/-Funktionen auszuführen.
-
Bezugnehmend auf 2 ist ein beispielhaftes Interrupt-Schnittstellensystem 200, das in dem (den) Prozessor(en) 110 und Komponenten aus 1 enthalten/ein Teil davon/kommunikativ damit gekoppelt sein kann. Das System 200 beinhaltet eine Interrupt-Steuerung oder eine Interrupt-Steuereinheit (ICU) 202/Prozessorkomponenten, die kommunikativ mit einer CPU 204 gekoppelt sind/eine andere Prozessorkomponente, die zwischen ausstehenden Interrupts vermittelt, die einer einzigen CPU 204 zugeordnet sind, die auch zum Beispiel der Prozessor 110 oder eine beliebige Einheit eines Prozessors 112, 114 darin sein kann.
-
Eine einzige Hardware-CPU 202 kann Interrupts einer Priorität zuordnen, die bis zu etwa 255 als eine höchste/niedrigste Priorität von null an dem gegenüberliegenden Ende der Skala sein kann, was ferner mittels eines Prioritätsvektors 220 (z. B. eines 8-Bit-Prioritätsvektors) mit der Priorität von Interrupts zu der CPU 204 mittels eines oder mehrerer Interrupt-Schnittstelle-Busse 208 umschlossen oder kommuniziert werden kann. Als Reaktion auf das Empfangen des Vektors 220 kann die CPU 204 mit einer Interrupt-Bestätigung (ACK) auf dem Bus 206 antworten, der zum Beispiel ein Halb- oder Vollduplexbus oder eine andere Kommunikationsverknüpfung, wie etwa eine optische Verknüpfung oder dergleichen, sein kann.
-
Wenn eine Interrupt- oder Dienstanforderung durch die CPU 204 von der ICU 202 oder einer anderen Komponente empfangen wird, muss sie durch die CPU 204 als eine Aufgabe bedient werden, die eine Basiseinheit zum Programmieren oder Ausführen als Firmware/Hardware sein kann, die als eine Systemsteuerung arbeitet, die wenigstens ein Teil eines Programms oder einer sukzessiven Aufrufung des Programms zum Beispiel als ein Prozess sein kann, der für eine Anwendung auf einer dedizierten Instanz auszuführen ist. Außerdem kann jede auf der CPU 204 ausgeführte Aufgabe auch eine Priorität beinhalten.
-
Ferner kann die ICU 202 die Interrupts aus den On-Chip-Ressourcen oder externen Ressourcen erhalten. Ein Interrupt kann eine Dienstanforderung für eine Zuwendung genutzter Ressourcen durch die CPU 204 sein. Die ICU 202 kann zum Beispiel einen Interrupt zu einer Interrupt-Anforderung durch Hinzufügen von Informationen ändern; wie hier verwendet, können ein Interrupt und eine Dienstanforderung austauschbar verwendet werden, wobei ein Interrupt als eine Dienstanforderung empfangen wird, um zum Beispiel eine Interrupt-Dienstroutine oder einen anderen Interrupt-Prozess auszulösen, wenn eine Ressource, wie etwa eine VM, ein VMM, ein Verarbeitungsarray oder eine Komponente beschäftigt ist oder sich in der Ausführung einer anderen Aufgabe befindet.
-
Die ICU 202 kann ein einziges Signal 220 zum Bereitstellen von CPUx 204 senden, das Informationen darüber vermittelt, dass eine Anwendung oder eine andere Komponente will, dass die CPU 204 durch Starten einer Interrupt-Dienstroutine (ISR) verarbeitet. Die einzige Signalinformation in der ICU 202 wird dementsprechend mit diesen zusätzlichen Informationen erweitert.
-
Zum Beispiel kann die ICU 202 Prioritätsinformationen zu einem Interrupt hinzufügen, um einen Interrupt mit einer Interrupt-Priorität bereitzustellen und zwischen allen anderen ausstehenden Interrupts für die CPU zu vermitteln, und kann weiter andere Informationen, wie etwa die Interrupt-Größe, an die CPU 204 senden. Von daher kann die ICU 202 als Verarbeitungs-/Prozessorvorrichtung integriert mit/als Teil der CPU 204 mit einer Hypervisor- oder VMM-Unterstützung arbeiten. Dies bedeutet, dass die CPU 202 nicht notwendigerweise eine einzige Aufgabe eines Betriebssystems mit einer darauf liegenden oder arbeitenden Anwendungssoftware ausführt. Das Betriebssystem kann eine einzige Anwendungssoftware sein, die auch eine Priorität von 0 bis 255 von dem Priorität-Interrupt bekommt.
-
Die CPU 204 kann einen VMM 210 und mehrere VMs, die zum Beispiel VM0 212, VM1 214, VM2 216 umfassen, beinhalten. Die schraffierten Teile des Vektors 220 können vorsehen, dass eine ICU 202 für eine gültige Dienstanforderung/einen gültigen Interrupt signalisiert, die/der für eine VMx (z. B. VM0 212, VM1 214 oder VM2 216)/den VMM 210 designiert ist. Die nichtschraffierten Teile de Vektors 220 können eine nichtgültige Dienstanforderung/einen nichtgültigen Interrupt für eine VMx/einen VMM als einen leeren Slot angeben. Diese Interrupts von der ICU 202 in der CPU 204, zum Beispiel als ein einziges Signal oder ein einziger Vektor, können für unterschiedliche Maschinen sein, wobei der Interrupt für die unterschiedlichen virtuellen Maschinen als Teil eines Aspekts hier zum Beispiel von der ICU 202 zu der CPU 204 zeitgemultiplext werden kann.
-
Jede VM kann ein Betriebssystem plus Anwendungssoftware und Interrupts mit zum Beispiel der Priorität von 0 bis 255 oder einem anderen Prioritätsbereich sowie ein voneinander unterschiedliches Prioritätsschema oder -protokoll zum Bestimmen oder Identifizieren eines gewinnenden Interrupts basierend auf der Priorität beinhalten. Bei manchen Vorgängen werden Interrupts an die CPU 204 gesendet und immer wenn ein neuer Interrupt mit zum Beispiel einer Priorität von 0 bis 255 (oder einem anderen Bereich von Prioritäten) eingeht, dann wird der VMM 210 aufgerufen/signalisiert/ausgelöst und versteht/leitet der VMM ab, dass die Prioritätszahl einer bestimmten VM, wie etwa zum Beispiel der VM0 212 oder einer anderen bestimmten VM, zugeordnet wird und ruft diese VMx (z. B. VM0 212) zur Ausführung der assoziierten Aufgabe mit dem Interrupt basierend auf einem Prioritätsschema auf, wobei andere Interrupts für eine momentane Ausführung einer Aufgabe in Schlange warten. Dann kann eine Vermittlung sämtlicher Interrupts einer virtuellen Maschine zugeordnet werden, bei der der Gewinner aller Interrupts aus allen ausstehenden Interrupts und gewinnenden Anforderungen/Interrupts jeder VM für die VM0 212 und gleichermaßen für die VM1 214, VM2 216 und so weiter gesendet werden kann.
-
Unter Bezugnahme auf 3 sind Beispiel-CPUs mit einer Interrupt-Schnittstelle gemäß einem/einer oder mehreren Aspekten/Ausführungsformen hier veranschaulicht. Eine CPU 310 veranschaulicht die CPUs mit dem VMM 210, mit den mehreren VMs 212-216, die kommunikativ mittels eines (nicht gezeigten) Schnittstellenbusses mit einem CPU-Prozessorstatuswort (PSW) 304 gekoppelt sind, dem ICR 306 und dem Vorherige-Kontextinformation-Register (PCXI: Previous Context Information Register) 308 als entsprechende Register.
-
Die CPU 302 und die CPU 310 umfassen ein CPU-Internet-Steuerregister (CPU-ICR) 306, das Informationen beinhaltet, die von zum Beispiel der ICU 202 an die CPU 302, 310 oder durch eine interne CPU-Komponente, wie etwa einen VMM, eine VM oder eine andere Komponente, gesendet werden. Die CPU 302 und die CPU 310 können zum Beispiel auch der Prozessor 110 oder eine beliebige Einheit eines Prozessors 112, 114 hierin sein, ein Teil davon sein oder damit gekoppelt sein. Die Informationen, die gesendet oder empfangen werden, können Folgendes beinhalten: eine momentane Aufgabenpriorität, die eine Priorität der CPU-Software einer Ausführung ist, die neueste Interrupt-Priorität, die durch die ICU 202 an die CPU 302, 304 gesendet wird, und ein zusätzliches Steuerbit, das angibt, ob nun ermöglicht wird, dass die CPU durch einen neuen Interrupt mit einer Priorität, die oberhalb der Aufgaben-/Teilaufgaben-Priorität liegt oder die eine definierte Schwelle erfüllt, unterbrochen wird.
-
Das PSW 304 kann ein Wort/Byte sein, das den Zustand einer Komponente oder der CPU zu jedem Zeitpunkt beschreibt, und kann angeben, welche Klasse von Vorgängen verboten oder zugelassen sind, als auch den Status von Interrupts, die mit der CPU oder dem Prozessor assoziiert sind. Das PSW 304 kann auch die Adresse der Anweisung angeben, die momentan ausgeführt wird. Von daher ermöglicht die CPU 310 eine Echtzeitsystemunterstützung für Mechanismen, die ermöglichen, dass die Anwendungssoftware die Bedingungen steuert, unter denen ermöglicht wird, dass ein neuer Interrupt, der mittels des Interrupt-Systems empfangen wird, die in der Ausführung befindliche Aufgabe unterbricht.
-
Insbesondere kann die CPU 310 das ICR 306 zum Beispiel mit einer momentanen CPU-Prioritätszahl (ICR.CCPN) 312, einer ausstehenden Interrupt-Prioritätszahl (ICR.PIPN) 314 und einem Interrupt-Enable-Bit (ICR.IE) 316 versorgen. Die ICR.CCPN 312 kann ein Bitfeld umfassen, das durch das Betriebssystem festgelegt werden kann, und zeigt die Prioritätszahl der momentanen Softwareaufgabe, wobei ein höherer Wert zum Beispiel eine höhere Priorität aufweisen kann. CCPN, wie hier verwendet, kann auch ähnlich als eine momentane Maschinenprioritätszahl (CMPN: Current Machine Priority Number) bezeichnet werden oder umgekehrt und kann in Abhängigkeit von dem Zusammenhang austauschbar verwendet werden.
-
Die ICR.PIPN 314 kann ein Bit umfassen, das durch die Interrupt-Systemhardware, wie etwa eine Prozessorkomponente (z. B. PC 408) der ICU 202 oder die CPU 204, 302, 310 gesetzt werden kann. Sie gibt den durch diese CPU 310 zu bedienenden ausstehenden Interrupt (Dienstanforderung) an. Zum Beispiel ist PIPN=0 als „kein Interrupt ausstehend“ definiert, wobei ein höherer Wert zum Beispiel eine höhere Priorität aufweist.
-
Das ICR.IE 316 kann aktiv sein, falls es als ein Bit Interrupt-Enable gesetzt ist. Falls dieses Bit 316 gesetzt (oder wahr) ist, kann die CPU 310 mit der Interrupt-Dienstroutine (ISR: Interrupt Service Routine) beginnen, wie durch die PIPN-Zahl definiert, und ferner falls die folgende Schwelle erfüllt wird: die PIPN > CCPN, oder wenn die PIPN 314 größer als die Zahl der CCPN 312 ist. Von daher könnte die CPU 310 dann die ISR starten, solange die CCPN 312 >= PIPN 314 ist.
-
Solange das IE 316 nicht gesetzt ist, kann die CPU 310 den Registerwert der PIPN 314 ignorieren (was bedeutet, dass sie beliebige neue Interrupts/Dienstanforderungen ignorieren (missachten/eine Handlung ausstehen lassen) kann). Das IE-Bit 316 kann automatisch als Reaktion auf einen Start einer ISR durch Hardware gelöscht werden. Dieser Mechanismus ermöglicht, dass eine ISR eine minimale Anzahl an Anweisungen ausführt, bevor sie wieder durch eine Interrupt-/Dienstanforderung mit einer höheren Priorität (z. B. einer höheren PIPN) unterbrochen werden kann. Die Software/Prozessorkomponente der CPU 310 kann dann den IE 316 wieder setzen, wenn sie bereit ist, wieder unterbrochen zu werden.
-
Die CPU 310 beinhaltet ferner das Register des PCXI 308, das Daten steuert, die in Zusammenhang mit einem vorherigen Interrupt oder einer vorherigen Aufgabe stehen, der/die durch eine vorherige Interrupt-/Dienstanforderung unterbrochen wurde. Diese Informationen/in Zusammenhang stehenden Daten können eine vorherige CPU-Prioritätszahl (PCXI.PCPN), das PCXI und einen vorherigen CPU-Interrupt-Enable (PCXI.PCIE) beinhalten, die jeweils Daten über die Aufgabe bereitstellen, die durch eine vorherige Interrupt-/Dienstanforderung unterbrochen wurde. Diese PCXI-Informationen können durch die CPU-Hardware 310 verwendet werden, wenn die in Zusammenhang stehende Software oder Anwendung der vorherigen Aufgabe zum Beispiel eine RFI-Anweisung (RFI: „Return from Interrupt Instruction“ - Rückkehr von Interrupt-Anweisung) ausführen und die zuvor unterbrochene Aufgabe fortsetzen will, was eine Rückkehr zu einer vorherigen Aufgabe durch die Ressource oder Komponente, die unterbrochen wurde, ermöglichen kann. Die CPU 310 kann entscheiden, ob die Anwendung/Software die RFI ausführen und zu der vorherigen Aufgabe (mit der Aufgabenpriorität wie in der Registerkomponente 308 als die PCXI-PCPN gespeichert) zurückkehren soll oder ob sie direkt mit einer neuen ausstehenden Interrupt-/Dienstanforderung starten soll (mit der Dienstanforderungspriorität, die in der ICR.PIPN 314 verfügbar ist). Von daher kann die CPU 310 als Reaktion auf die Situation, bei der die Software/Anwendung eine Ausführung einer RFI für eine zuvor unterbrochene auszuführende Aufgabe anfordert, Vorgänge mit einer neuen Interrupt-/Dienstanforderung initiieren, falls die ICR.PIPN 314 größer als oder ungefähr die PCXI.PCPN ist (z. B. ICR.PIPN 314 > PCXI.PCPN) oder eine in Zusammenhang stehende Schwelle erfüllt, ansonsten kann die CPU 310 zu der vorherigen Aufgabe zur Ausführung zurückkehren.
-
Interrupt-Schnittstellen für eine CPU mit VMM-Unterstützung können die CPU mit einer einzigen Interrupt-Schnittstelle und keinem speziellen Hardwaresupport versehen und können der CPU oft eine Interrupt-Schnittstelle für den VMM und eine für die VM geben. Von daher könnten alle Interrupts durch den VMM 210 bearbeitet werden. Dies bedeutet, dass alle Interrupts einer CPU in einem Prioritätsschema (z. B. 0-255) zugeordnet werden könnten, ein beliebiger Interrupt einen VMM-Aufruf zur Ausführung erfordert, der VMM 210 nur einen Interrupt auf einmal sehen oder beachten kann oder der VMM-Overhead linear mit der Anzahl an Interrupts verbunden ist.
-
Wenn alle Interrupts (entweder momentan ausstehende oder eingehende neue Interrupts von einer oder mehreren CPU-Komponenten oder anderen Vorrichtungskomponenten) durch den VMM 210 bearbeitet werden, kann dies bedeuten, dass alle Interrupts der VMx (z. B. 212-216) einem einzigen Prioritätsschema (z. B. 0-255) anstelle von entsprechenden oder einzelnen Prioritätsschemata für jede VMx zugeordnet werden könnten, dass ein VMM-Interrupt mit einem dedizierten Prioritätsschema (z. B. 0-32) sein könnte, ein beliebiger Interrupt einen VMM-Aufruf (oder eine/ein VMMgelenkte/gelenktes Handlung/Signal zum Initiieren) erfordert, der VMM 210 lediglich einen VMM- und einen VMx-Interrupt auf einmal sehen kann oder der VMM-Overhead linear mit der Anzahl an Interrupts verbunden ist.
-
Unter Bezugnahme auf 4 ist eine andere Beispiel-CPU 402 gemäß anderen verschiedenen Aspekten/Ausführungsformen hier beschrieben. Die CPU 402 kann zum Beispiel mit einer Hypervisor-/VMM-Unterstützung konfiguriert sein, die den Leistungsfähigkeit-Overhead für die Bearbeitung von Interrupts drastisch reduzieren und die Anzahl an Taktzyklen verringern kann, die für Interrupt-Schnittstellen oder Interrupt-Bussysteme genutzt werden, die mit den Komponenten der CPU 402 oder dem Prozessor integriert sind. Die CPU 402, wie bei der CPU 302 und der CPU 310, und ein beliebiger anderer Prozessor oder eine beliebige andere CPU hierin können zum Beispiel auch der Prozessor 110 oder eine beliebige Einheit eines Prozessors 112, 114 hierin sein, ein Teil davon sein oder damit gekoppelt sein.
-
Bei einem Aspekt umfasst die CPU 402 ein PSW 404, die ICR_CTRL 406, die Prozessorvorrichtung 408, den VMM 410 und einen Satz von VMs 412-416. Der VMM 410 und die VMs 412-416 der CPU 402 umfassen jeweils eine entsprechende ICR 420, 424, 428 und 432, die jeweils ähnliche Komponenten wie die ICR 306 der CPU 310 aus 3 umfassen können. Außerdem umfassen der VMM 410 und die VMs 412-416 der CPU 402 jeweils ein entsprechendes PCXI 422, 426, 430 bzw.434, die alle jeweils über einen Bus 450 bei einer oder mehreren Schnittstellen miteinander gekoppelt sein können, wobei die CPU 402 Daten von jeder Komponente gleichzeitig oder parallel auf einmal wahrnehmen oder verarbeiten kann.
-
Die ICR-Register 420, 424, 428 und 432 sind dazu konfiguriert, eine momentane Aufgabenpriorität, eine ausstehende Interrupt-Priorität und einen Interrupt-Enable-Status, wie oben mit der ICR 306 aus 3 besprochen, anzugeben (z. B. über den Bus 150 oder dergleichen). Zusätzlich können die PCXIs 422, 426, 430 und 434 dazu konfiguriert sein, Informationen, die in Zusammenhang mit einer vorherigen/unterbrochenen Aufgabe stehen, über den Bus anzugeben, wobei die Informationen einen Enable-Status der vorherigen/unterbrochenen Aufgabe beinhalten, die durch die/den entsprechende/entsprechenden Komponente, VMM, VM oder CPU ausgeführt wird.
-
Bei einem Beispiel kann die CPU 402 parallele Eingaben von jeder Maschine, einem VMM 410 und jeder VMx 412, 414, 416 mit ihrem dedizierten Interrupt-Prioritätsschema wahrnehmen/betreiben (z. B. Interrupts zu VMM 410 mit Prioritäten 0-255, Interrupts zu VM0 412 mit Prioritäten 0-255, Interrupts zu VM1 414 mit Prioritäten 0-255 und Interrupts zu VM2 416 mit Prioritäten 0-255). Die Hardware der CPU 402 nimmt den Status der momentanen Maschinensoftwareaufgabe wahr (VMM 410 oder, falls nicht VMM 410, welche VMx 412-416 momentan arbeitet oder sich nicht in einem ausgelasteten Ausführungszustand befindet). Der Status des VMM 410 und jeder VMx 412-416 kann für die CPU 402 oder eine assoziierte Verarbeitungskomponente zum Beispiel parallel/gleichzeitig/zur gleichen Zeit/simultan zu der CPU-Hardware und der VMM-Software transparent werden. Von daher kann der Schnittstellenbus 450, der die Komponenten der veranschaulichten CPU 402 kommunikativ koppelt, transparent hinsichtlich der momentanen Aufgabenpriorität(en), der ausstehenden Interrupt-Priorität(en) und des Interrupt-Enable arbeiten. Diese Aspekte können weiter ermöglichen, dass die CPU 402 eine flexiblere Ausführung der Virtuelle-Maschine-Dienstanforderungen oder Interrupts, die zum Beispiel für eine Ausführung durch eine VM auf der CPU 402 bereitgestellt werden oder eingehen, unterstützt.
-
Bei einem anderen Aspekt kann ein dediziertes Prioritätsschema unabhängig pro VMx 412-416 und für den VMM 410 bereitgestellt oder aktiviert werden, deren Ausgaben durch den VMM 410 oder durch die Verarbeitungsvorrichtung 408 der CPU 402 in Abhängigkeit von dem Betriebsmodus der CPU (VM-Modus oder VMM-Modus) aggregiert, empfangen, verarbeitet werden können. Interrupts, die einer momentan ausgeführten VM zugeordnet sind, können direkt an eine beliebige VM 412-416 ohne einen VMM-Aufruf oder mit anderen Worten durch die Prozessorkomponente 408, wie zum Beispiel im VM-Betriebsmodus, weitergeleitet werden.
-
Ein/eine Hardware-Steuer/Entscheidung-Mechanismus oder -Prozessorkomponente (z. B. PC 408) kann durch den VMM 410 konfiguriert werden, der die Bedingungen definiert, unter denen eine VMx (z. B. 412-416) durch eine Dienstanforderung zu einer anderen VM oder mit anderen Worten Interrupt-/Dienstanforderungen zwischen VMs der CPU 402 unterbrochen werden kann.
-
Ferner können zusätzliche Prioritätsschwellen (neben oder zusätzlich zu der PIPN und CCPN) definiert werden, um ein Faktor in der Entscheidung zu sein, die involviert, ob oder nicht (oder wann) eine VM (z. B. VM0 412) direkt durch einen Interrupt unterbrochen werden kann, der einer anderen VM (VM1 414) zugeordnet ist. D. h., die Entscheidung, Interrupts und ansprechende ISRs aus VMs derselben CPU 402 zu aktivieren, kann entschieden werden, um direkt, ohne einen VMM-Aufruf von dem VMM 410, basierend auf einem oder mehreren von Folgendem als Faktoren/Funktionen dieses Entscheidungsvorgangs durch die PC 408 implementiert zu werden: der PIPN, CCPN oder zusätzlichen Prioritäten/zusätzlichen Prioritätsschwellen, die erfüllt werden.
-
Bei anderen Aspekten/Ausführungsformen kann die CPU 402 dazu konfiguriert sein, ihre Hardware (z. B. Verarbeitungskomponenten oder Verarbeitungsfunktionen) zu der ICR 406 für die verschiedenen VMs 412-416 zu replizieren; dies gibt der Interrupt-Hardware die Fähigkeit, einen Interrupt für eine bestimmte VM 412-416, den VMM 410 und für die CPU parallel zum Vergleichen mehrerer Prioritäten anstatt lediglich einer Priorität in einem einzigen Vergleich auf einmal zu präsentieren. Von daher kann die CPU 402 zum Beispiel über die Verarbeitungskomponente 408 Informationen von jeder Komponente 404-434 haben, die parallel mit mehreren unterschiedlichen Prioritäten eingegeben werden, die gemultiplext oder verglichen werden können, um Interrupt-Dienstanforderungen, momentane Bedingungen und vorherige Bedingungen zu bestimmen, um eine ISR zum Unterbrechen einer Komponente/Ressource auf einer dedizierten Instanz einer Anwendung eines Gastbetriebssystems für eine auszuführende Aufgabe zu initiieren. Die CPU 402 kann daher dazu wirken, mehrere Maschinen-Interrupts (VM-Interrupts) parallel zu empfangen/verarbeiten und Hardwareentscheidungen parallel darüber zu treffen, ob sie sogleich in ein Gastbetriebssystem akzeptiert werden oder ob sie sogleich in den Hypervisor/VMM akzeptiert werden oder ob sie allgemein ignoriert werden, weil der Interrupt sowieso nicht genommen worden wäre.
-
Bei einem anderen Aspekt kann die CPU 402 ihren eigenen Status und jenen aller anderen Komponenten, die darin eingesetzt werden, wahrnehmen/verarbeiten, während sie in mehreren Betriebsmodi arbeitet. Falls sie zum Beispiel in einem VMM-Modus arbeitet oder falls sie sich in einem VM/VMx-Modus befindet, weiß die CPU 402 oder verarbeitet gleichzeitig parallel eine Kenntnis davon, was zum Beispiel der ausstehende Interrupt mit der höchsten Priorität (oder der gewinnende Interrupt) für jede VM 412-416 und den VMM 410 gemeinsam oder unabhängig zu der gleichen Zeit/gleichzeitig ist. Die CPU 402 (z. B. über die PC 408) kann bestimmen, dass sie sich in einem VM-Modus befindet und kann dementsprechend zum Beispiel die Entscheidung treffen, falls es eine neue Interrupt-/Dienstanforderung für die VM1 414 gibt, ob sie sie direkt weitergibt oder eine ISR zu der VM1 414 oder einer anderen VM (z. B. der VM2 416) erzeugt, die sich in der Ausführung befindet, ohne zu dem VMM-Modus wechseln zu müssen, wobei der VMM 410 ansonsten einen VMM-Aufruf zu der in Ausführung befindlichen VM1 414 bereitstellen könnte.
-
In dem VMM-Betriebsmodus steuert/verwaltet der VMM 410 Interrupts an die VMs 412-416 und ihre individuellen Prioritätszustände mit Informationen von jeder der ICRs 424, 428 und 432 und seiner eigenen ICR 420, die jeweils eine CCPN, PIPN und ein IE als Komponenten mit Daten ähnlich der ICR.CCPN 312, der ICR.PIPN 314 bzw. der ICR.IE 316 der CPU 310 umfassen können, und auch mit PCXIs 422-434 als eine ähnliche Komponente mit ähnlichen Daten wie die oben beschriebene PCXI 308. Der VMM-Modus könnte auch als ein Hypervisor-Modus (oder ein ähnlicher Modus wie ein zusätzlicher Prioritätsmodus) beschrieben werden, bei dem der Virtuelle-Maschine-Monitor die einzige Komponente ist, die ausgeführt wird/abläuft, falls ein Hypervisor-Port in der CPU 402 aktiviert ist; dann kann der VMM 410 der einzige sein, der in dieser Hypervisor-Priorität zum Bestimmen abläuft, ob eine VM zum Beispiel eine andere VM unterbrechen kann oder durch eine andere Anwendung/Komponente der Vorrichtung 100 oder der CPU 402 unterbrochen werden kann.
-
Unter Bezugnahme auf 5 und 6 zusammen ist in 5 ein Beispiel für Daten in einer CPU-Schnittstelle zu einem Interrupt-System veranschaulicht, wie in Verbindung mit 6 beschrieben ist. Während 5 die CPU 402 mit gewissen Daten oder Eingaben zum Steuern von Entscheidungen (z. B. einem erweiterten PSW (ePSW) oder einem dedizierten ISR/PCXR (PCXI)) veranschaulicht, auf denen Entscheidungen basieren, veranschaulicht 6 die Daten, die in eine Entscheidungslogikkomponente 602 der Prozessorkomponente 408 eingegeben werden.
-
Bei einem Beispiel könnte eine Busschnittstelle (z. B. 140 oder 450), wie unter Bezugnahme auf 1 und 4 beschrieben, ebenso als ein Beispielkontext dienen, durch den die CPU 402 zum Beispiel mit den verschiedenen Komponenten, die mit der CPU 402 assoziiert sind oder durch diese gesteuert werden, gekoppelt werden könnte. Von daher können diese Informationen oder Daten einer Schnittstelle zum Treffen von Entscheidungen mittels der Prozessorkomponente 408 mit einer Entscheidungslogikkomponente 602 über eine oder mehrere Eingaben verarbeitet werden, um zu bestimmen, wie der/die VMM 410/VMMs 412, 416 zu steuern sind oder eine Steuerung von diesen zu delegieren ist.
-
Die in 5 veranschaulichte CPU 402 ist mit verschiedenen Typen von empfangenen Daten veranschaulicht, die für Vermittlungsentscheidungen in Bezug auf einen neu empfangenen Interrupt zum Beispiel entweder direkt in dem VM-Modus oder über einen VMM-Aufruf in dem VMM-Betriebsmodus verarbeitet werden können. Die CPU-Schnittstelle zu dem Interrupt-System kann dazu wirken, eine oder mehrere VMs (z. B. 412-416) für eine Aufgabe einer Anwendung auf einer Instanz eines Gastbetriebssystems zu steuern. Die CPU 402 kann zum Beispiel eine oder mehrere Schnittstellen (z. B. Ports/Eingangs-/Ausgangsanschlüsse oder dergleichen) zu dem Interrupt-System aufweisen, wobei die Entscheidungskomponente 602 Informationen über die neueste gewinnende Dienstanforderung für eine oder mehrere VMs und den VMM empfangen kann. Von daher kann der VMM 410 und jede VM 412-416 ein anderes Prioritätsschema speichern oder darauf zugreifen, das basierend auf den unterschiedlichen Eingaben und Daten, die durch jedes Datenfeld in Bezug auf das ICR und das Vorheriger-Kontext-Register (PCXR oder wie PCXI) veranschaulicht werden, unterschiedlichen Prioritätsschwellen oder dergleichen variieren kann, wobei jedes Prioritätsschema/jede Prioritätsschwelle auf zum Beispiel einem oder mehreren unabhängigen Faktoren in Bezug auf eine Interrupt-Wartezeit, einen Interrupt-Warteschlange-Anwendungsursprung, einen momentanen Status, eine Aufgabenassoziation, eine andere Ressourcenverfügbarkeit oder andere Prioritätsschemafaktoren basieren kann.
-
Bei einem Aspekt/einer Ausführungsform könnten die Eingangsdaten pro VM 410/VMM 412-416 dediziert sein oder könnten die Interrupt-/Dienstanforderungsinformationen (als eine Dienstanforderung für Ressourcen oder eine Unterbrechung momentaner Prozesse für eine Ressource) signalisiert werden, indem sie durch das Interrupt-System 500 zu der CPU 402 Zeit-gemultiplext werden, oder könnten die Interrupt-/Dienstanforderungsinformationen eine Mischung aus dedizierten Schnittstellen (z. B. für die VMM-Dienstanforderungsinformationen) und Zeitgemultiplexten (z. B. für die Dienstanforderungsinformationen für die VMs 412-416) sein. Eine Zeitmultiplexlösung kann zum Beispiel eine geringfügig höhere Interrupt-Latenz im Vergleich zu einer Mischung aus dedizierten Schnittstellen, die weniger Taktzyklen potentiell mit der VMM-Interrupt-Struktur/Komponentenunterstützung als ohne sie für die CPU 402 erzeugen können, bieten.
-
Bei einem anderen Aspekt können PSW-Daten 502 durch die Komponente des PSW 404 der CPU 402 gesteuert werden und eine erweiterte/Erweiterung des PSW (ePSW) 502 sein. Das CPU-PSW 404 kann Registerbitinformationen 502 über den VMM/VMx-Status der CPU 402 bereitstellen. Dies bedeutet, dass die Hardware der CPU 402 (Prozessorkomponente 408), immer darüber Bescheid wissen kann, ob sich momentan der VMM 410 oder eine beliebige der VMs 412-416 in Ausführung befindet, einschließlich der Informationen darüber, welche VM, VM0 412, VM1 414 oder VM2 416, sich in Ausführung befindet, insbesondere zu der Zeit des Empfangens einer neuen Interrupt-/Dienstanforderung.
-
Das ePSW 502 kann ein PSW.VMM-Bit(s)/Angabe- und ein PSW.VM-Bit(s)/Angabe-Feld sowie andere Container-Informationen oder -Daten umfassen. Das PSW.VM-BitFeld kann eine Angabe einer Anzahl an angrenzenden Computerspeicherstellen beinhalten, die zum Halten einer Sequenz von Bits oder einer ähnlichen Datenstruktur, die zum Beispiel dem ePSW 502 entspricht, zugeordnet wurden. Eine Modifikation der PSW.VMM- und der PSW.VM-Informationen kann zum Beispiel auf den VMM 410 begrenzt sein. Dies bedeutet, dass eine Software oder Anwendung sie nur ändern kann, falls das VMM-Bit gesetzt (oder wahr) ist, wobei die CPU 402 in dem VMM-Modus arbeitet und die Software/Anwendung, die ausgeführt wird, VMM-Privilegien aufweist. Wie oben angegeben, bestimmt der VMM-Modus, dass der VMM 410 die VMs 412-416 über einen VMM-Aufruf an eine VM für eine ISR als Reaktion darauf verwalten kann, dass eine Anwendung oder eine andere VM eine Interrupt-/Dienstanforderung für eine andere VM vornimmt, anstatt dass die CPU 402 oder die Prozessorkomponente 408 der CPU 402 die Entscheidungen und eine Implementierung einer ISR als Reaktion auf eine empfangene Interrupt-/Dienstanforderung direkt verwaltet/steuert. Eine Software kann VMM-Privilegien aufweisen, wobei sie dazu in der Lage ist, zum Beispiel auf die VMM 410 zuzugreifen oder mit dieser zu kommunizieren und eine Anforderung für Ressourcen (oder eine andere VM) vorzunehmen, oder eine Software des VMM 410 ist wie beschrieben dazu funktionsfähig, VMs 412-416 gemäß dem VMM-Betriebsmodus zu steuern.
-
Andere Daten oder in Zusammenhang stehende Eingaben können durch die ICR_CTRL (oder ICR.CTRL) 504 zum Beispiel für eine dedizierte ICR pro VMx 412-416, den VMM 410, übertragen werden und beinhalten Variablen der Entscheidungsvorgänge oder -schemata. Die CPU 504 kann dementsprechend mehrere Instanzen der ICRs 420, 424, 428 und 432 mittels der ICR.CTRL 406 implementieren/steuern, wobei jede Instanz übertragener Daten Dateneingaben 506 und 5081-508n zu der CPU 402 für den sein kann.
-
Zum Beispiel kann eine für den VMM 410 dedizierte Instanz ein ICR_VMM 506 als Dateneingabe sein, die ein Bitfeld, eine Momentane-Maschine(VMM/VMx)-Prioritätszahl (CMPN) und ein Interrupt-Enable (IE) umfassen kann. Das ICR_VMM.PIPN-Bit(s)/Angabe-Feld stellt die ausstehende Interrupt-Prioritätszahl für den VMM 410 bereit. Der ICR_VMM.CMPN umfasst die Priorität der momentanen VMM-Aufgabe, die sich in Ausführung befindet oder bedient wird. Außerdem signalisiert das ICR_VMM.IE, ob die VMM-Aufgabe, die sich in der Ausführung befindet, unterbrochen werden kann oder nicht.
-
Das ICR_VMM-Register 506 kann dem PSW.VMM-Bit des PSW 502 zugewiesen sein. Dementsprechend kann das PSW.VMM-Bit(s)/Angabe-Feld Daten steuern, verwalten oder mit dem ICR_VMM-Register 506 des VMM 410 kommunizieren. Das PSW definiert den CPU-Hardwarezustand (in Bezug darauf, ob sie sich in einem VMM-Modus befindet und, falls nicht, welche VMx sie in einem VM-Modus betreibt) für jeden Hardwarezustand (VMM, VM0, VM1, ... etc.). Es kann ein ICR-Register geben, das ihm fest zugewiesen ist. Dies beinhaltet einen Zugriffsschutz für eine ICR-Modifikation, wobei, falls die CPU sich in einem VMM-Modus befindet, Software alle ICR-Register modifizieren kann und, falls sich die CPU zum Beispiel in einem VM1-Modus befindet, die Software lediglich ICR_VM1, aber nicht ICR_VMM, ICR_VMO und so weiter bis ICR_VMx/ICR_VMn (wobei x oder n verwendet werden kann, um zum Beispiel eine positive ganze Zahl größer null zu repräsentieren) modifizieren kann.
-
Eine andere Dateninstanz kann für jede unterstützte VM 412-416 als ICR_VMx; 508x=0 - n oder 5081 - 508n dediziert sein. Das ICR_VMx.PIPN-Bit-Feld 5081 - 508n gibt die ausstehende Interrupt-Prioritätszahl für die VMx (z. B. VMx 412-416) an. Die ICR_VMx.CMPN 5081 - 508n gibt die Priorität der Aufgabe der momentanen VMx 412-416, die sich in Ausführung oder in einem ausgelasteten Zustand befindet, an. Das ICR_VMx.IE 5081 - 508n signalisiert, ob die VMx-Aufgabe, die sich in Ausführung befindet, unterbrochen werden kann oder nicht. Jedes ICR_VMx-Register 5081 - 508n kann durch Hardware jeweils einer PSW.VM-Bit-Codierung zugewiesen/dazu gesteuert werden und kann durch Software gesteuert werden, falls das PSW.VMx auf die in Zusammenhang stehende Codierung gesetzt ist oder falls PSW.VMM gesetzt ist.
-
Die dedizierten Vorheriger-Kontextinformationen-Register (PCXI) können pro VMx 5121 - 512n und der VMM 410, auch als ein Vorheriger-Kontext-Register (PCXR) bezeichnet, konfiguriert sein. Die PCXI-Register 422, 426, 430 und 434 beinhalten zum Beispiel jeweils Informationen über die vorherige/unterbrochene Aufgabe der VMx 412-416/des VMM 410. Zum Beispiel können diese Informationen in Bezug auf das PCXI/PCXR 510, 5121 - 512n (ein) Vorheriger-Interrupt-Enable(IE)-Bit(s), (eine) vorherige Maschinenprioritätszahl(en) und zusätzliche Informationen oder Zeiger umfassen. Die Vorheriger-Interrupt-IE-Bits können den Zustand oder Status der vorherigen/unterbrochenen Aufgabe der assoziierten Maschine bereitstellen, die durch den Interrupt unterbrochen wird. Die vorherige Maschinenprioritätszahl kann auf das Niveau der vorherigen/unterbrochenen Aufgabe dieser Maschine verweisen. Die Zusatzinformationen können einen Zeiger oder einen anderen Indikator zu der Aufgaben-Context-Save-Area, einem Typ von Context-Save-Vorgang oder einem anderen speicherbezogenen Abruf oder Anweisung-Recall beinhalten, der zum Beispiel ausgeführt oder unterbrochen wurde.
-
Die CPU 402 kann auch mehrere Instanzen des PCXI für die verschiedenen Maschinen implementieren. Eine Instanz kann für den VMM (PCXI_VMM/PCXR_VMM) 510 dediziert sein. Das PCXI_VMM-Register 422 kann den PSW.VMM-Bits 510 zugewiesen sein und eine andere Instanz kann für jede unterstützte virtuelle Maschine (PCXI_VMx, x=0-n) 5121 - 512n dediziert sein. Jedes PCXI_VMx-Register 426, 430 und 434 kann durch die CPU 402 einer PSW.VM-Bit(s)-Codierung zugewiesen sein.
-
Jede VMx-Instanz kann durch Hardware einer PSW.VMx-Codierung zugewiesen sein. Falls sich die CPU in einem VMM-Modus befindet, was bedeuten kann, dass das PSW.VMM-Bit 502 gesetzt (oder wahr) ist, kann das Folgende auftreten: 1) eine Anwendung/Software kann Komponenten/Register von ICR_VMM/VMx 420, 424, 428 und 432 und auch von PCXI_VMM/VMx 422, 426, 430 und 434 modifizieren; 2) eine Hardware/CPU wird RFI-Anweisungen als Einstellung von PCXI_VMM 510 berücksichtigen; 3) eine Ausnahme (Interrupt) oder Rückkehr von einer Ausnahme/einem Interrupt kann das PCXI_VMM 510 modifizieren.
-
Falls sich die CPU 402 in einem VMx-Modus befindet, was bedeuten kann, dass das/die PSW.VMM-Bit(s) des PSW 502 nicht gesetzt ist/sind, ist das PSW.VM dann auf die VMx-Codierung gesetzt und kann das Folgende auftreten: 1) eine Hardware/CPU kann eine PCXI_VMx-Einstellung 5121 - 512n für eine RFI-Anweisung berücksichtigen; 2) eine Anwendung/Software kann lediglich die/das VMx_ICR-Komponente/Register 5121 - 512n modifizieren; eine Ausnahme (Interrupt) oder Rückkehr von einer Ausnahme wird eine Modifikation des PCXI_VMx 5121 - 512n modifizieren/auslösen.
-
Bei einem Aspekt kann das dedizierte ICR-Konfigurationssteuerregister (ICR_CTRL) 406 genutzt werden, um die CPU-Hardware stets in Kenntnis über den Status des VMM 410 oder über welche VMx (mittels des oder durch das PSW.VMM und das PSW.VM) zu halten. Die ICR_CTRL-Komponente kann lediglich durch Anwendungssoftware modifiziert werden, während sich die CPU 402 in einem VMM-Modus befindet. Außerdem kann die CPU 402 oder eine andere Komponente das ICR_CTRL 406 während der Laufzeit sperren.
-
Die CPU 402 stellt ein zusätzliches Konfigurationsregister (ICR_CTRL) 406 bereit, wobei eine Anwendungssoftware definieren kann, wie die CPU auf neue PIPN-Werte in den Registern von ICR_VMx/ICR_VMM 506, 5081 - 508n reagiert, während sich eine VMx in Ausführung befindet. Das zusätzliche Register kann ein ICR_CTRL beinhalten, das die verschiedenen Antworten auf verschiedene Interrupt-Bedingungen in Bezug auf den VMM/Hypervisor und die mehreren VMs, die mit der Entscheidungslogikkomponente 602 gekoppelt sind, umfasst oder angibt. Die Entscheidungslogikkomponente 602 kann dementsprechend die Antwort auf einen neuen PIPN-Wert durch Folgendes entscheiden: Implementieren keiner Änderung, Nutzen der neuen PIPN für die VM, die sich in Ausführung befindet oder ausgelastet ist, dann direktes Weiterleiten an die PIPN, die sich in Ausführung befindet, falls ein VM-Modus vorliegt, oder Nutzen der neuen PIPN und, falls eine VM-Änderung notwendig ist, zum Beispiel Senden an die VM mit einem VMM-Aufruf über den VMM 410.
-
Verschiedene Antworten oder Reaktionen und unter welchen Bedingungen können dementsprechend wie beschrieben in einigen wenigen Beispielen dargestellt werden. Bei einem Beispiel wechselt die Hardware der CPU 402 dann in den VMM-Modus, wenn sich eine VMx in Ausführung befindet (definiert mittels PSW.VM oder PSW VMx), der CPU 402 ein neuer Interrupt für den VMM 410 durch das Interrupt-System signalisiert wird, das ICR_VMx.IE gesetzt (oder wahr) ist, die Schwelle ICR_VMM.PIPN > ICR_VMx.PIPN wahr ist und falls konfiguriert ist, dass die VMx durch VMM-Interrupts unterbrochen werden kann, ansonsten wird die VMx nicht unterbrochen.
-
Bei einem anderen Beispiel kann eine andere Antwort Wechseln zu einem VMM/Hypervisor-Betriebsmodus zum Unterbrechen der ersten VM mittels des VMM/Hypervisors beinhalten, wenn sich die VMx in Ausführung befindet, der CPU 402 ein neuer Interrupt für VMy (zum Beispiel eine von VMx verschiedene VM) durch einen Interrupt/das Interrupt-System signalisiert wird, das ICR_VMx. IE gesetzt (oder wahr) ist, eine Schwelle erfüllt wird, wie etwa ICR_VMy.PIPN > ICR_VMx.PIPN UND ICR_VMy.PIPN > ICR_VMy.CMPN (wobei z. B. die erste VM-PIPN größer als eine andere erste VM-PIPN ist und eine zweite VM-PIPN größer als eine andere zweite VM-PIPN ist), konfiguriert ist, dass die VMx durch einen VMy-Interrupt unterbrochen werden kann und die erste VM dazu konfiguriert ist, durch den Interrupt unterbrochen zu werden, ansonsten wird die VMx nicht unterbrochen.
-
Bei einem weiteren Beispiel kann, falls die VMx sich in Ausführung befindet, der CPU 402 ein neuer Interrupt für die VMx durch den Interrupt/das Interrupt-System signalisiert wird, das ICR_VMx.IE gesetzt (oder wahr) ist, die Schwelle ICR_VMx.PIPN > ICR_VMx.PIPN erfüllt ist, konfiguriert werden, ob die CPU in einen VMM-Zustand wechselt oder in einem VMx-Modus verbleibt und die momentane Aufgabe unterbricht.
-
Bei anderen Ausführungsformen kann die CPU 402 ein allgemeines Register oder ein Register pro VMx einführen, dass Folgendes definiert: ein Interrupt-Prioritätsniveau, wobei eine VMx unterbrochen werden kann, falls das VMx ICR_VMx.IE-Bit gesetzt ist, es wenigstens eine VMy mit ICR_VMy.PIPN > ICR_VMx.PIPN gibt und ermöglicht ist, dass die VMx durch eine andere VM unterbrochen wird. Der Vorteil dieser Option ist, dass eine VMx-Aufgabe durch einen beliebigen Interrupt unterbrochen werden kann, der der VMx mit einem ICR_VMx.PIPN > ICR_VMx.CCPN zugeordnet ist, und ein/eine unabhängiges/unabhängige Prioritätsniveau/-schwelle zum Unterbrechen der VMx durch eine andere VMy durchgeführt werden kann. Der Vorteil ist, dass für jede VM ein Niveau durch die Anwendungssoftware definiert ist, die durch die VM ausgeführt wird (mittels CMPN), und ein zweites Niveau für diese VM durch den VMM definiert werden kann, wobei eine andere VM mit einer Dienstanforderung mit höherer Priorität die VMx unterbrechen kann.
-
Die Entscheidungslogikkomponente 602 kann dementsprechend dazu wirken, die unterschiedlichen Zustände, wie einen momentanen und vorherigen, sowie die Prioritätsnummerierung jeder virtuellen Komponente der CPU 402 für einen Interrupt-Aufruf zu berücksichtigen und die Ressourcen zu vermitteln, unabhängig davon, ob eine gegebene VM abläuft oder nicht, ähnlich zum Beispiel einer Zustandsfunktion. Von daher kann eine erste Stufe der Entscheidungslogikkomponente 602 eine lokale Vermittlung von VMs beinhalten, um den höchsten Interrupt für jede VM zu finden, und kann dann eine zweite Stufe sämtliche Anforderungen von den unterschiedlichen VMs berücksichtigen, von denen eine die momentan aktive ist, und dann basierend auf diesen Daten entscheiden, ob zu der momentanen VM weitergeleitet wird oder eine andere unterbrochen wird.
-
Obwohl die innerhalb dieser Offenbarung beschriebenen Verfahren hier als eine Reihe von Handlungen oder Ereignissen veranschaulicht und beschrieben sind, versteht es sich, dass die veranschaulichte Reihenfolge derartiger Handlungen oder Ereignisse nicht als einschränkend auszulegen ist. Zum Beispiel können manche Handlungen in unterschiedlicher Reihenfolge und/oder gleichzeitig mit anderen Handlungen oder Ereignissen als den vorliegend veranschaulichten und/oder beschriebenen stattfinden. Zusätzlich dazu werden möglicherweise nicht alle veranschaulichten Handlungen benötigt, um einen oder mehrere Aspekte oder eine oder mehrere Ausführungsformen der vorliegenden Beschreibung zu implementieren. Eine oder mehrere der vorliegend abgebildeten Handlungen können ferner in einer oder mehreren separaten Handlungen und/oder Phasen ausgeführt werden.
-
Unter Bezugnahme auf 7 ist ein Prozessfluss 700 zum Steuern von Interrupt-Dienstanforderungen eines Hypervisors/VMM und von VMs für eine CPU. Das Verfahren beginnt bei 710 mit Empfangen einer Interrupt-Anforderung über einen oder mehrere Prozessoren, die einem oder mehreren von Folgendem entspricht: einem VMM/Hypervisor oder mehreren VMs, der/die dazu konfiguriert sein kann/können, eine oder mehrere VMs-Anwendungen eines Gastbetriebssystems für eine oder mehrere Aufgaben auszuführen.
-
Bei 720 kann eine Bestimmung, ob die Interrupt-Anforderung an den VMM/Hypervisor und die mehreren VMs gewährt wird, basierend auf einem Satz vorbestimmter Kriterien erzeugt werden.
-
Bei 730 kann die Interrupt-Anforderung basierend auf der Bestimmung kommuniziert werden oder kann eine ISR erzeugt werden.
-
Bei anderen Aspekten kann auch eine Bestimmung eines momentanen Status von Interrupt-Prioritätsschemata, die dem VMM/Hypervisor und den mehreren VMs entsprechen, basierend auf Informationen von CPU-ICUs und PCXIs-Registern vorgenommen werden, die jeweils dem VMM/Hypervisor und den VMs entsprechen.
-
Die Vorgänge des Prozessflusses 700 können ferner direktes Weiterleiten des Interrupts über den Bus an eine VM beinhalten, während sich die VM gleichzeitig in Ausführung befindet, ohne einen VMM-Aufruf von dem VMM/Hypervisor als Reaktion darauf, dass sich die CPU in einem VM-Modus anstelle eines VMM/Hypervisor-Modus befindet.
-
Eine Bestimmung kann auch basierend auf Zuständen (oder definierten Antworten/Schwellen), die durch den VMM/Hypervisor konfiguriert werden können, darüber vorgenommen werden, ob eine erste VM dazu konfiguriert ist, durch eine Dienstanforderung unterbrochen zu werden, die als der Interrupt von einer zweiten VM der mehreren VMs empfangen wird. Diese Zustände oder Reaktionen können Prioritätsschwellen beinhalten, die Folgendes umfassen: eine ausstehende Interrupt-Zahl, die mit dem VMM/Hypervisor bzw. den mehreren VMs assoziiert ist, eine momentane Zentrale-Verarbeitungseinheit(CPU)-Prioritätszahl, die mit dem VMM/Hypervisor bzw. den mehreren VMs assoziiert ist, und eine oder mehrere zusätzliche Prioritätsschwellen zum Bestimmen, ob eine erste VM dazu in der Lage ist, direkt durch einen Interrupt unterbrochen zu werden, der einer zweiten VM zugeordnet ist, als Reaktion darauf, dass die Prozessorkomponente in einem VM-Modus arbeitet.
-
Beispiele können einen Gegenstand beinhalten, wie etwa ein Verfahren, ein Mittel zum Durchführen von Handlungen oder Blöcken des Verfahrens, wenigstens ein maschinenlesbares Medium, das Informationen beinhaltet, die, wenn sie durch eine Maschine ausgeführt werden, bewirken, dass die Maschine Handlungen des Verfahrens oder einer Einrichtung oder eines Systems zur gleichzeitigen Kommunikation unter Verwendung mehrerer Kommunikationstechnologien gemäß hier beschriebenen Ausführungsformen und Beispielen ausführt.
-
Beispiel 1 ist ein System, das Folgendes umfasst: eine Prozessorkomponente, die mehrere virtuelle Maschinen (VMs) und einen Virtuelle-Maschine-Monitor (VMM)/Hypervisor, der zum Steuern der mehreren VMs konfiguriert ist, umfasst, wobei der Prozessor zu Folgendem konfiguriert ist: Empfangen mehrerer Interrupt-Anforderungen, die einem oder mehreren von Folgendem entsprechen: dem VMM/Hypervisor oder den mehreren VMs; und Bestimmen, ob eine Interrupt-Anforderung der mehreren Interrupt-Anforderungen an den VMM/Hypervisor und die mehreren VMs gewährt wird, basierend auf einem Satz vorbestimmter Kriterien.
-
Beispiel 2 beinhaltet den Gegenstand aus Beispiel 1, wobei der VMM/Hypervisor und die mehreren virtuellen Maschinen (VMs) jeweils ein Interrupt-Steuerregister (ICR) und ein Vorheriger-Kontext-und-Ausführungsinformationen(PCXI)-Register umfassen und wobei die Prozessorkomponente ferner dazu konfiguriert ist, einen momentanen Status von Interrupt-Prioritätsschemata, der jeweils dem VMM/Hypervisor und den mehreren VMs entspricht, als Teil des Satzes vorbestimmter Kriterien zu bestimmen.
-
Beispiel 3 beinhaltet den Gegenstand aus einem der Beispiele 1-2, einschließlich beliebiger optionaler Elemente oder diese auslassend, wobei der Satz vorbestimmter Kriterien eines oder mehrere von Folgendem umfasst: einer momentanen Aufgabenpriorität, einer ausstehenden Interrupt-Priorität oder einem Interrupt-Enable, assoziiert mit dem momentanen Status.
-
Beispiel 4 beinhaltet den Gegenstand aus einem der Beispiele 1-3, einschließlich beliebiger optionaler Elemente oder diese auslassend, wobei die Prozessorkomponente ferner ein Prozessorstatusregister, das ein erweitertes Prozessorstatuswort (ePSW) umfasst, und ein zusätzliches Register umfasst, das eine Interrupt-Steuerregister(ICR)-Konfigurationssteuerung (ICR-CTRL) umfasst, die mehrere Reaktionen auf verschiedene Interrupt-Zustände in Bezug auf den VMM/Hypervisor und die mehreren VMs umfasst.
-
Beispiel 5 beinhaltet den Gegenstand aus einem der Beispiele 1-4, einschließlich beliebiger optionaler Elemente oder diese auslassend, wobei die mehreren Interrupt-Anforderungen mehrere VM-Dienstanforderungen umfassen, die der einen oder den mehreren VM-Anwendungen entsprechen.
-
Beispiel 6 beinhaltet den Gegenstand aus einem der Beispiele 1-5, einschließlich beliebiger optionaler Elemente oder diese auslassend, wobei die Prozessorkomponente ferner dazu konfiguriert ist, eine oder mehrere Interrupt-Anforderungen der mehreren Interrupt-Anforderungen direkt an eine VM der mehreren VMs weiterzuleiten, während sich die VM gleichzeitig in Ausführung befindet, und wobei die VM ferner dazu konfiguriert ist, die eine oder die mehreren Interrupt-Anforderungen ohne einen VMM-Aufruf von dem VMM/Hypervisor zu empfangen.
-
Beispiel 7 beinhaltet den Gegenstand aus einem der Beispiele 1-6, einschließlich beliebiger optionaler Elemente oder diese auslassend, wobei die Prozessorkomponente ferner eine Entscheidungslogikkomponente umfasst, die dazu konfiguriert ist, basierend auf einer oder mehreren Bedingungen, die durch den VMM/Hypervisor konfiguriert werden, zu bestimmen, ob eine erste VM der mehreren VMs dazu konfiguriert ist, durch eine Dienstanforderung unterbrochen zu werden, die von einer zweiten VM der mehreren VMs empfangen wird.
-
Beispiel 8 beinhaltet den Gegenstand aus einem der Beispiele 1-7, einschließlich beliebiger optionaler Elemente oder diese auslassend, wobei der VMM/Hypervisor ferner dazu konfiguriert ist, die eine oder die mehreren Bedingungen für die Entscheidungslogikkomponente zu definieren, wobei die eine oder die mehreren Bedingungen Prioritätsschwellen umfassen, die Folgendes umfassen: eine ausstehende Interrupt-Zahl, die mit dem VMM/Hypervisor bzw. den mehreren VMs assoziiert ist, eine momentane Zentrale-Verarbeitungseinheit(CPU)-Prioritätszahl, die mit dem VMM/Hypervisor bzw. den mehreren VMs assoziiert ist, und eine oder mehrere zusätzliche Prioritätsschwellen zum Bestimmen, ob eine erste VM dazu in der Lage ist, direkt durch einen Interrupt unterbrochen zu werden, der einer zweiten VM zugeordnet ist, als Reaktion darauf, dass die Prozessorkomponente in einem VM-Modus arbeitet.
-
Beispiel 9 ist eine Einrichtung, die Folgendes umfasst: eine Prozessorkomponente, die einen Speicher umfasst, der Anweisungen zum Ausführen von Vorgängen beinhaltet, mehrere Schnittstellen und einen Bus, der dazu konfiguriert ist, den Speicher und die mehreren Schnittstellen kommunikativ mit mehreren virtuellen Maschinen (VMs) und einem Virtuelle-Maschine-Monitor (VMM)/Hypervisor zu koppeln und Daten in Bezug auf mehrere Interrupt-Anforderungen der mehreren VMs und des VMM/Hypervisors an eine Entscheidungslogikkomponente der Prozessorkomponente zu kommunizieren; wobei die Prozessorkomponente dazu konfiguriert ist, zu bestimmen, ob eine Interrupt-Anforderung der mehreren Interrupt-Anforderungen an den oder von dem VMM/Hypervisor und an die/von den mehreren VMs gewährt wird, basierend auf einem Satz vorbestimmter Kriterien.
-
Beispiel 10 beinhaltet den Gegenstand aus Beispiel 9, einschließlich beliebiger optionaler Elemente oder diese auslassend, wobei der Satz vorbestimmter Kriterien einen Betriebsmodus der Prozessorkomponente aus einem Satz von Modi umfasst, die einen VM-Modus und einen VMM/Hypervisor-Modus umfassen, und wobei die Prozessorkomponente ferner dazu konfiguriert ist, die Interrupt-Anforderung direkt zu gewähren und eine Interrupt-Dienstroutine (ISR) bei einer VM der mehreren VMs als Reaktion darauf, dass sie sich in dem VM-Modus befindet, auszulösen.
-
Beispiel 11 beinhaltet den Gegenstand aus einem der Beispiele 9-10, einschließlich beliebiger optionaler Elemente oder diese auslassend, wobei die mehreren Interrupt-Anforderungen mehrere gewinnende Dienstanforderungen umfassen, die sich aus unterschiedlichen Interrupt-Prioritätsschemata des VMM und der mehreren VMs ergeben und wobei die Prozessorkomponente ferner dazu konfiguriert ist, eine ISR bei einer VM der mehreren VMs als Reaktion auf die Interrupt-Anforderung als eine gewinnende Dienstanforderung basierend auf ersten Prioritätsniveaus von Anwendungen, die durch die mehreren VMs ausgeführt werden, und zweiten Prioritätsniveaus der mehreren VMs, die durch den VMM/Hypervisor definiert werden, auszulösen.
-
Beispiel 12 beinhaltet den Gegenstand aus einem der Beispiele 9-11, einschließlich beliebiger optionaler Elemente oder diese auslassend, der ferner Folgendes umfasst: ein Prozessorstatusregister, das ein erweitertes Prozessorstatuswort (ePSW) umfasst, mit der Entscheidungslogikkomponente gekoppelt ist, und dazu konfiguriert ist, das ePSW an die Entscheidungslogikkomponente zu liefern; und ein zusätzliches Register, das eine Interrupt-Steuerregister(ICR)-Konfigurationssteuerung (ICR-CTRL) umfasst, die mehrere Reaktionen auf verschiedene Interrupt-Bedingungen in Bezug auf den VMM/Hypervisor und die mehreren VMs umfasst, mit der Entscheidungslogikkomponente gekoppelt ist und dazu konfiguriert ist, die ICR-CTRL an die Entscheidungslogikkomponente zu liefern.
-
Beispiel 13 beinhaltet den Gegenstand aus einem der Beispiele 9-12, einschließlich beliebiger optionaler Elemente oder diese auslassend, wobei das ePSW angibt, ob der VMM/Hypervisor und eine oder mehrere VMs der mehreren VMs sich in einem ausgelasteten Zustand befinden, und die eine oder die mehreren VMs in dem ausgelasteten Zustand identifiziert.
-
Beispiel 14 beinhaltet den Gegenstand aus einem der Beispiele 9-13, wobei die Entscheidungslogik dazu konfiguriert ist, basierend auf den verschiedenen Interrupt-Bedingungen, zu bestimmen, ob eine erste VMx der mehreren VMs dazu konfiguriert ist, durch eine Dienstanforderung unterbrochen zu werden, die von einer zweiten VMy der mehreren VMs empfangen wird, und die Reaktion auf die verschiedenen Bedingungen basierend auf einem Vergleich mit Prioritätsschwellen zu bestimmen.
-
Beispiel 15 beinhaltet den Gegenstand aus einem der Beispiele 9-14, einschließlich beliebiger optionaler Elemente oder diese auslassend, wobei die Prioritätsschwellen Folgendes umfassen: eine ausstehende Interrupt-Zahl, die mit dem VMM/Hypervisor bzw. den mehreren VMs assoziiert ist, eine momentane Zentrale-Verarbeitungseinheit(CPU)-Prioritätszahl, die mit dem VMM/Hypervisor bzw. den mehreren VMs assoziiert ist, und eine oder mehrere zusätzliche Prioritätsschwellen zum Bestimmen, ob eine erste VM dazu in der Lage ist, direkt durch einen Interrupt unterbrochen zu werden, der einer zweiten VM zugeordnet ist, als Reaktion darauf, dass die Prozessorkomponente in einem VM-Modus oder einem VMM/Hypervisor-Betriebsmodus arbeitet.
-
Beispiel 16 ist ein Verfahren, das Folgendes umfasst: Empfangen eines Interrupt über einen oder mehrere Prozessoren, der einem oder mehreren von Folgendem entspricht: einem VMM/Hypervisor oder mehreren VMs; Erzeugen einer Bestimmung über den einen oder die mehreren Prozessoren, ob der Interrupt an den VMM/Hypervisor und die mehreren VMs gewährt wird, basierend auf einem Satz vorbestimmter Kriterien; und Kommunizieren des Interrupts basierend auf der Bestimmung über einen Bus, der kommunikativ mit dem einen oder den mehreren Prozessoren, dem VMM/Hypervisor und den mehreren VMs gekoppelt ist.
-
Beispiel 17 beinhaltet den Gegenstand aus Beispiel 16, wobei die Vorgänge ferner Folgendes umfassen: Bestimmen eines momentanen Status der Interrupt-Prioritätsschemata, die dem VMM/Hypervisor und den mehreren VMs entsprechen, basierend auf Informationen von Zentrale-Verarbeitungseinheit(CPU)-Interrupt-Steuerregistern (ICUs) und Vorheriger-Kontext-und-Ausführungsinformationen(PCXIs)-Registern des VMM/Hypervisors und den mehreren virtuellen Maschinen (VMs)
-
Beispiel 18 beinhaltet den Gegenstand aus einem der Beispiele 16-17, einschließlich beliebiger optionaler Elemente oder diese auslassend, wobei die Vorgänge ferner Folgendes umfassen: als Reaktion auf den Betrieb in einem VM-Modus anstelle eines VMM/Hypervisor-Modus direktes Weiterleiten des Interrupts über den Bus an eine VM der mehreren VMs, während sich die VM gleichzeitig in Ausführung befindet, ohne einen VMM-Aufruf von dem VMM/Hypervisor.
-
Beispiel 19 beinhaltet den Gegenstand aus einem der Beispiele 16-18, einschließlich beliebiger optionaler Elemente oder diese auslassend, wobei die Vorgänge ferner Folgendes umfassen: Bestimmen über den einen oder die mehreren Prozessoren, ob eine erste VM der mehreren VMs dazu konfiguriert ist, durch eine Dienstanforderung unterbrochen zu werden, die als der Interrupt von einer zweiten VM der mehreren VMs empfangen wird, basierend auf einer oder mehreren Bedingungen, die durch den VMM/Hypervisor konfiguriert werden.
-
Beispiel 20 beinhaltet den Gegenstand aus einem der Beispiele 16-19, einschließlich beliebiger optionaler Elemente oder diese auslassend, wobei die Vorgänge ferner Folgendes umfassen: Definieren der einen oder der mehreren Bedingungen, die Prioritätsschwellen beinhalten, die Folgendes umfassen: eine ausstehende Interrupt-Zahl, die mit dem VMM/Hypervisor bzw. den mehreren VMs assoziiert ist, eine momentane Zentrale-Verarbeitungseinheit(CPU)-Prioritätszahl, die mit dem VMM/Hypervisor bzw. den mehreren VMs assoziiert ist, und eine oder mehrere zusätzliche Prioritätsschwellen zum Bestimmen, ob eine erste VM dazu in der Lage ist, direkt durch einen Interrupt unterbrochen zu werden, der einer zweiten VM zugeordnet ist, als Reaktion darauf, dass die Prozessorkomponente in einem VM-Modus arbeitet.
-
Anwendungen (z. B. Programmmodule) können Routinen, Programme, Komponenten, Datenstrukturen usw. beinhalten, die bestimmte Aufgaben durchführen ober gewisse abstrakte Datentypen implementieren. Zudem versteht ein Fachmann, dass die offenbarten Vorgänge mit anderen Systemkonfigurationen einschließlich Einprozessor- oder Mehrprozessorsystemen, Minicomputern, Mainframe-Computern sowie PCs, Handheld-Rechenvorrichtungen, mikroprozessorbasierter oder programmierbarer Endverbraucherelektronikelementen und dergleichen umgesetzt werden können, wobei jedes von diesen operativ mit einer oder mehreren assoziierten mobilen oder persönlichen Rechenvorrichtungen gekoppelt sein kann.
-
Eine Rechenvorrichtung kann typischerweise eine Vielzahl von computerlesbaren Medien beinhalten. Computerlesbare Medien können beliebige verfügbare Medien sein, auf die durch den Computer zugegriffen werden kann, und beinhalten sowohl flüchtige als auch nichtflüchtige Medien, entfernbare und nichtentfernbare Medien. Als Beispiel und nicht als Beschränkung können computerlesbare Medien Computerspeichermedien und Kommunikationsmedien umfassen. Computerspeichermedien beinhalten sowohl flüchtige als auch nichtflüchtige, entfernbare und nichtentfernbare Medien, die mit einem beliebigen Verfahren oder einer beliebigen Technologie zur Speicherung von Informationen implementiert sind, wie etwa computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten. Computerspeichermedien (z. B. eine oder mehrere Datenspeicherungen) können unter anderem RAM, ROM, EEPROM, Flash-Speicher oder eine andere Speichertechnologie, CD-ROM, Digital-Versatile-Disks (DVDs) oder andere optische Plattenspeicher, Magnetkassetten, Magnetband, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder ein beliebiges anderes Medium beinhalten, das dazu verwendet werden kann, die gewünschten Informationen zu speichern, und auf das durch den Computer zugegriffen werden kann.
-
Kommunikationsmedien realisieren in der Regel computerlesbare Anweisungen, Datenstrukturen, Programmodule oder andere Daten in einem modulierten Datensignal, wie zum Beispiel einer Trägerwelle oder einem anderen Transportmechanismus, und beinhalten beliebige Informationslieferungsmedien. Der Ausdruck „moduliertes Datensignal“ bedeutet ein Signal, bei dem eine oder mehrere Charakteristiken auf solche Art festgelegt oder geändert werden, dass Informationen in dem Signal codiert werden. Als Beispiel, aber nicht als Einschränkung, beinhalten Kommunikationsmedien drahtgebundene Medien, wie etwa ein drahtgebundenes Netz oder eine direktdrahtgebundene Verbindung, und drahtlose Medien, wie etwa akustische, HF-, Infrarot- und andere drahtlose Medien. Kombinationen von beliebigen des Obigen sollten ebenfalls innerhalb des Umfangs von computerlesbaren Medien enthalten sein.
-
Es versteht sich, dass hier beschriebene Aspekte durch Hardware, Software, Firmware oder eine beliebige Kombination davon implementiert werden können. Wenn sie in Software implementiert sind, können Funktionen als eine oder mehrere Anweisungen oder Code auf einem computerlesbaren Medium gespeichert oder über ein solches übertragen werden. Computerlesbare Medien beinhalten sowohl Computerspeichermedien als auch Kommunikationsmedien einschließlich eines beliebigen Mediums, das eine Übertragung eines Computerprogramms von einem Ort zu einem anderen ermöglicht. Speichermedien können beliebige verfügbare Medien sein, auf die durch einen Mehrzweck- oder Spezialcomputer zugegriffen werden kann. Als Beispiel und nicht als Beschränkung können derartige computerlesbare Medien RAM, ROM, EEPROM, CD-ROM oder andere optische Plattenspeicher-, magnetische Plattenspeicher- oder andere magnetische Speichervorrichtungen oder ein beliebiges anderes Medium, das zum Tragen oder Speichern von gewünschten Programmcodemitteln in der Form von Anweisungen oder Datenstrukturen verwendet werden kann und auf das durch einen Mehrzweck- oder Spezialcomputer oder einen Mehrzweck- oder Spezialprozessor zugegriffen werden kann, umfassen. Außerdem wird eine beliebige Verbindung angemessen als ein computerlesbares Medium bezeichnet. Falls zum Beispiel Software von einer Website, einem Server oder einer anderen fernen Quelle unter Verwendung eines Koaxialkabels, eines Glasfaserkabels, eines Twisted-Pair-Kabels, eines digitalen Teilnehmeranschlusses (DSL - Digital Subscriber Line) oder drahtloser Technologien, wie etwa Infrarot, Funk und Mikrowellen, übertragen wird, dann sind das Koaxialkabel, das Glasfaserkabel, das Twisted-Pair-Kabel, der DSL oder die drahtlosen Technologien, wie etwa Infrarot, Funk und Mikrowellen, in der Definition von Medium eingeschlossen. Disk und Disc beinhalten, so wie sie hier verwendet werden, eine Compact Disc (CD), eine Laser Disc, eine optische Disc, eine Digital Versatile Disc (DVD), eine Floppy-Disk und eine Blu-ray Disc, wobei Disks Daten üblicherweise magnetisch reproduzieren, wohingegen Discs Daten optisch mit Lasern reproduzieren. Kombinationen des Obigen sollten ebenfalls innerhalb des Umfangs von computerlesbaren Medien enthalten sein.
-
Verschiedene veranschaulichende Logiken, Logikblöcke, Module und Schaltkreise, die in Verbindung mit hier offenbarten Aspekten beschrieben sind, können mit einem Mehrzweckprozessor, einem digitalen Signalprozessor (DSP), einem anwendungsspezifischen integrierten Schaltkreis (ASIC), einem vor Ort programmierbaren Gate-Array (FPGA) oder einer anderen programmierbaren Logikvorrichtung, einer diskreten Gate- oder Transistorlogik, diskreten Hardwarekomponenten oder einer beliebigen Kombination davon, die zum Durchführen hier beschriebener Funktionen gestaltet ist, implementiert oder durchgeführt werden. Ein Mehrzweckprozessor kann ein Mikroprozessor sein, aber alternativ dazu kann ein Prozessor ein beliebiger herkömmlicher Prozessor, Controller, Mikrocontroller oder eine Zustandsmaschine sein. Ein Prozessor kann auch als eine Kombination von Rechenvorrichtungen, zum Beispiel eine Kombination eines DSP und eines Mikroprozessors, mehrerer Mikroprozessoren, eines oder mehrerer Mikroprozessoren in Verbindung mit einem DSP-Kern oder eine beliebige andere solche Konfiguration, implementiert werden. Zusätzlich kann wenigstens ein Prozessor ein oder mehrere Module umfassen, das/die dazu funktionsfähig ist/sind, eine oder mehrere der hier beschriebenen Handlungen und/oder Aktionen durchzuführen.
-
Für eine Softwareimplementierung können hier beschriebene Techniken mit Modulen (z. B. Prozeduren, Funktionen und so weiter) implementiert werden, die hier beschriebene Funktionen durchführen. Softwarecodes können in Speichereinheiten gespeichert und durch Prozessoren ausgeführt werden. Eine Speichereinheit kann innerhalb eines Prozessors oder extern zu einem Prozessor, wobei eine Speichereinheit in diesem Fall durch verschiedene Mittel, wie in der Technik bekannt, kommunikativ mit dem Prozessor gekoppelt sein kann, implementiert werden. Ferner kann wenigstens ein Prozessor ein oder mehrere Module beinhalten, die dazu funktionsfähig sind, hier beschriebene Funktionen durchzuführen.
-
Hier beschriebene Techniken können für verschiedene Drahtloskommunikationssysteme, wie etwa CDMA, TDMA, FDMA, OFDMA, SC-FDMA und andere Systeme, verwendet werden. Die Ausdrücke „System“ und „Netz“ werden oft austauschbar verwendet. Ein CDMA-System kann eine Funktechnologie, wie etwa Universal Terrestrial Radio Access (UTRA), CDMA2000 usw., implementieren. UTRA beinhaltet Wideband-CDMA (W-CDMA) und andere Varianten von CDMA. Ferner deckt CDMA2000 den IS-2000-, IS-95- und IS-856-Standard ab. Ein TDMA-System kann eine Funktechnologie, wie etwa Global System for Mobile Communications (GSM), implementieren. Ein OFDMA-System kann eine Funktechnologie, wie etwa Evolved UTRA (E-UTRA), Ultra Mobile Broadband (UMB), IEEE 802.11 (Wi-Fi), IEEE 802.16 (WiMAX), IEEE 802.20, Flash-OFDM usw., implementieren. UTRA und E-UTRA sind Teil von Universal Mobile Telecommunication System (UMTS). 3GPP Long Term Evolution (LTE) ist eine Version von UMTS, die E-UTRA verwendet, das OFDMA auf einem Downlink und SC-FDMA auf einem Uplink verwendet. UTRA, E-UTRA, UMTS, LTE und GSM sind in Dokumenten von einer Organisation mit dem Namen „3rd Generation Partnership Project“ (3GPP) beschrieben. Außerdem sind CDMA2000 und UMB in Dokumenten von einer Organisation mit dem Namen „3rd Generation Partnership Project 2“ (3GPP2) beschrieben. Ferner können solche Drahtloskommunikationssysteme zusätzlich Peer-to-Peer(z. B. Mobil-zu-Mobil)-ad-hoc-Netzwerksysteme beinhalten, die oft nichtgepaarte nichtlizensierte Spektren, 802.xx-Wireless-LAN, BLUETOOTH und beliebige andere kurz- oder langreichweitige Drahtloskommunikationstechniken, wie etwa zum Beispiel Millimeterwellenbänder in dem Bereich von 30 GHz bis 300 GHz, verwenden.
-
Single Carrier Frequency Division Multiple Access (SC-FDMA), das eine einzige Trägermodulation und einen Frequenzdomänenausgleich verwendet, ist eine Technik, die mit den offenbarten Aspekten genutzt werden kann. SC-FDMA weist eine ähnliche Leistungsfähigkeit und im Wesentlichen eine ähnliche Gesamtkomplexität wie jene eines OFDMA-Systems auf. Ein SC-FDMA-Signal weist aufgrund seiner inhärenten Einzelträgerstruktur ein niedrigeres Spitze-zu-Durchschnitt-Leistungsverhältnis (PAPR: Peak-To-Average Power Ratio) auf. SC-FDMA kann in Uplink-Kommunikationen genutzt werden, wo ein niedrigeres PAPR einem Mobilendgerät einen Vorteil hinsichtlich einer Übertragungsleistungseffizienz bringen kann.
-
Zudem können verschiedene hier beschriebene Aspekte oder Merkmale als ein Verfahren, eine Einrichtung oder ein Herstellungsartikel unter Verwendung von Standardprogrammier- und/oder Konstruktionstechniken implementiert werden. Der wie vorliegend verwendete Ausdruck „Herstellungsartikel“ soll ein Computerprogramm einschließen, das von einer beliebigen computerlesbaren Einrichtung, Träger oder Medien zugänglich ist. Zum Beispiel können computerlesbare Medien unter anderem magnetische Speichervorrichtungen (z. B. eine Festplatte, eine Diskette, Magnetstreifen usw.), optische Discs (z. B. Compact Disc (CD), Digital Versatile Disc (DVD) usw.), Smart-Cards und Flash-Speichervorrichtungen (z. B. EPROM, Karte, Stick, Key-Drive usw.) beinhalten. Außerdem können verschiedene hier beschriebene Speichermedien eine oder mehrere Vorrichtungen und/oder andere maschinenlesbare Medien zum Speichern von Informationen repräsentieren. Der Ausdruck „maschinenlesbares Medium“ kann ohne Einschränkung darauf drahtlose Kanäle und verschiedene andere Medien, die zum Speichern, Enthalten und/oder Tragen einer (von) Anweisung(en) und/oder Daten in der Lage sind, beinhalten. Außerdem kann ein Computerprogrammprodukt ein computerlesbares Medium beinhalten, das eine/einen oder mehrere Anweisungen oder Codes aufweist, die dazu funktionsfähig sind, einen Computer zum Durchführen von hier beschriebenen Funktionen zu veranlassen.
-
Ferner können die in Verbindung mit hier offenbarten Aspekten beschriebenen Handlungen und/oder Aktionen eines Verfahrens oder Algorithmus direkt in Hardware, in einem Softwaremodul, das durch einen Prozessor ausgeführt wird, oder einer Kombination davon umgesetzt werden. Ein Softwaremodul kann in einem RAM-Speicher, Flash-Speicher, ROM-Speicher, EPROM-Speicher, EEPROM-Speicher, Registern, einer Festplatte, einer entfernbaren Disk, einer CD-ROM oder einer beliebigen anderen Form eines in der Technik bekannten Speichermediums vorliegen. Ein beispielhaftes Speichermedium kann mit einem Prozessor gekoppelt sein, so dass der Prozessor Informationen aus einem Speichermedium lesen und Informationen in dieses schreiben kann. Alternativ kann ein Speichermedium integral mit einem Prozessor sein. Ferner können bei manchen Aspekten ein Prozessor und Speichermedium in einem ASIC vorliegen. Außerdem kann ein ASIC in einem Benutzerendgerät vorliegen. Alternativ können ein Prozessor und Speichermedium als diskrete Komponenten in einem Benutzerendgerät vorliegen. Außerdem können bei manchen Aspekten die Handlungen und/oder Aktionen eines Verfahrens oder Algorithmus als ein/eine oder eine beliebige Kombination oder Satz von Codes und/oder Anweisungen auf einem maschinenlesbaren Medium und/oder computerlesbaren Medium vorliegen, das in ein Computerprogrammprodukt eingebunden sein kann.
-
Die obige Beschreibung veranschaulichter Ausführungsformen der Gegenstandsoffenbarung, einschließlich dessen, was in der Zusammenfassung beschrieben ist, soll nicht erschöpfend sein oder die offenbarten Ausführungsformen auf die offenbarten genauen Formen beschränken. Während spezielle Ausführungsformen und Beispiele hier zu veranschaulichenden Zwecken beschrieben sind, sind verschiedene Modifikationen möglich, die als innerhalb des Schutzumfangs solcher Ausführungsformen und Beispiele betrachtet werden, wie ein Fachmann erkennt.
-
Während der offenbarte Gegenstand in Verbindung mit verschiedenen Ausführungsformen und gegebenenfalls entsprechenden Figuren beschrieben wurde, versteht es sich in dieser Hinsicht, dass andere ähnliche Ausführungsformen verwendet oder Modifikationen und Hinzufügungen an den beschriebenen Ausführungsformen vorgenommen werden können, um die gleiche, eine ähnliche, alternative oder ersetzende Funktion zu dem offenbarten Gegenstand ohne Abweichung von diesem durchzuführen. Daher sollte der offenbarte Gegenstand nicht auf eine beliebige einzige hier beschriebene Ausführungsform beschränkt sein, sondern sollte vielmehr in der Bedeutung und dem Schutzumfang der angehängten Ansprüche unten ausgelegt werden.
-
Es ist beabsichtigt, mit besonderer Berücksichtigung der verschiedenen von den oben beschriebenen Komponenten oder Strukturen (Baugruppen, Vorrichtungen, Schaltkreisen, Systemen usw.) durchgeführten Funktionen, dass die Ausdrücke (die einen Bezug auf ein „Mittel“ beinhalten), die verwendet werden, um solche Komponenten zu beschreiben, soweit nicht anders angegeben, irgendeiner Komponente oder Struktur entsprechen, die die spezifizierte Funktion der beschriebenen Komponente durchführt (die z. B. funktional äquivalent ist), selbst wenn sie der offenbarten Struktur strukturell nicht äquivalent ist, die die Funktion in den vorliegend veranschaulichten beispielhaften Implementierungen der Erfindung durchführt. Außerdem kann zwar ein bestimmtes Merkmal bezüglich nur einer von mehreren Implementierungen offenbart worden sein, doch kann ein derartiges Merkmal mit einem oder mehreren anderen Merkmalen der anderen Implementierungen kombiniert werden, wie dies für eine beliebige gegebene oder eine bestimmte Anwendung wünschenswert und vorteilhaft sein kann.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- IEEE 802.11 [0139]
- IEEE 802.16 [0139]
- IEEE 802.20 [0139]