-
HINTERGRUND
-
1. Technisches Gebiet
-
Die
gegenwärtige
Offenlegung betrifft das Gebiet der Informationsverarbeitung und
insbesondere das Gebiet der Virtualisierung in einem Informationsverarbeitungssystem.
-
2. Beschreibung verwandter Technik
-
Generell
erlaubt das Konzept der Virtualisierung in Informationsverarbeitungssystemen
mehreren Instanzen von einem oder mehreren Betriebssystemen (jedes
ein „OS”) auf einem
einzelnen Informationsverarbeitungssystem zu arbeiten, wenn auch
jedes OS konzipiert ist, um vollständige direkte Kontrolle über das
System und seine Ressourcen zu haben. Virtualisierung wird normalerweise
durch Verwendung von Software implementiert (z. B. ein Virtual Machine
Monitor oder ein um jedem OS eine „virtuelle Maschine” („VM”) zu präsentieren,
die virtuelle Ressourcen, einschließlich einem oder mehreren virtuellen
Prozessoren haben, die das OS vollständig und direkt steuern kann,
während
der VMM eine Systemumgebung aufrechterhält, um Virtualisierungsrichtlinien
zu implementieren, wie beispielsweise die physischen Ressourcen
unter den VMs (das „Virtualisierungsumfeld”) gemeinsam
zu benutzen und/oder zuzuordnen. Jedes OS und jede andere Software, die
auf einem VM arbeitet, werden als „Gast” oder als „Gast-Software” bezeichnet,
während
ein „Host” oder „Host-Software” Software
darstellt, wie beispielsweise ein VMM, der außerhalb des Virtualisierungsumfeldes
arbeitet.
-
Ein
physischer Prozessor in einem Informationsverarbeitungssystem kann
Virtualisierung zum Beispiel unterstützen, indem er eine Anweisung
unterstützt,
um in ein Virtualisierungsumfeld einzusteigen und einen Gast auf
einem virtuellen Prozessor (d. h. ein physischer Prozessor unter
auferlegten Einschränkungen
durch einen VMM) in einer VM zu betreiben. Im Virtualisierungsumfeld
können
bestimmte Ereignisse, Operationen und Situationen, wie beispielsweise
externe Interrupts oder Versuche auf privilegierte Register oder
Ressourcen zuzugreifen, unterbrochen werden, d. h. sie können den
Prozessor veranlassen, das Virtualisierungsumfeld zu beenden, sodass
ein VMM zum Beispiel arbeiten kann, um Virtualisierungsrichtlinien
zu implementieren.
-
Eine
physische Ressource im System, wie beispielsweise ein Eingabe-/Ausgabe-Geräte-Controller,
kann einer VM auf einer dedizierten Basis zugewiesen oder zugeordnet
werden. Alternativ kann eine physische Ressource von mehreren VMs
gemeinsam benutzt werden, indem man alle Transaktionen, die die
Quelle einschließen,
unterbricht, sodass der VMM jede Transaktion ausführen, umadressieren
oder einschränken
kann. Ein dritter Ansatz kann sein, die physische Ressource so zu
konzipieren, dass man sie als mehrere virtuelle Ressourcen verwenden
kann.
-
Kurze Beschreibung der Figuren
-
Die
vorliegende Erfindung wird exemplarisch und in keiner Weise einschränkend in
den begleitenden Figuren dargestellt.
-
1 zeigt
eine Vorrichtung, um Transaktionen gemäß einer Ausführungsform
der vorliegenden Erfindung einzuführen.
-
2 zeigt
ein Verfahren, um Transaktionen gemäß einer Ausführungsform
der vorliegenden Erfindung einzuführen.
-
Ausführliche Beschreibung
-
Die
gegenwärtige
Erfindung kann in eine Vorrichtung oder Verfahren für das Einführen von Transaktionen
aufgenommen werden, um die Virtualisierung eines physischen Geräte-Controllers,
wie nachfolgend beschrieben, zu unterstützen. In der Beschreibung können zahlreiche
spezifische Details, wie beispielsweise Komponenten- und Systemkonfigurationen
angeführt
werden, um ein gründlicheres Verständnis der
vorliegenden Erfindung zu ermöglichen.
Für den
Fachmann ist es jedoch offensichtlich, dass die Erfindung auch ohne
diese spezifischen Details realisierbar ist. Zusätzlich wurden einige weithin bekannte
Strukturen, Schaltungen, u. A. im Detail nicht gezeigt, um eine
unnötige
Ablenkung von der Beschreibung der vorliegenden Erfindung zu vermeiden.
-
Es
kann für
einen einzelnen physischen Geräte-Controller
wünschenswert
sein, von mehreren virtuellen Maschinen gemeinsam benutzt zu werden, ohne
zu erfordern, dass ein VMM alle Transaktionen unterbricht, die den
Geräte-Controller
einschließen, oder
dass die Geräte-Controller
neu konzipiert werden, um Virtualisierung zu unterstützen. Deshalb können Ausführungsformen
der Erfindung die Repräsentation
eines einzelnen physischen Geräte-Controllers
als mehrere virtuelle Geräte-Controller
unterstützen,
indem sie Transaktionen auffangen, die den physischen Geräte-Controller
einschließen
und Transaktionen im Auftrag der virtuellen Geräte-Controller einführen.
-
Elemente
von Ausführungsformen
der Erfindung können
in Hardware, Software, Firmware oder jeder Kombination von Hardware,
Software oder Firmware implementiert werden. Der Begriff Hardware
bezeichnet generell ein Element, das eine physische Struktur, wie
beispielsweise elektronische, elektromagnetische, optische, elektro-optische,
mechanische, elektromechanische Teile usw. besitzt. Der Begriff
Software bezeichnet generell eine logische Struktur, ein Verfahren,
eine Verfahrensweise, ein Programm, eine Routine, einen Prozess,
einen Algorithmus, eine Formel, einen Ausdruck usw. Der Begriff
Firmware bezeichnet generell eine logische Struktur, ein Verfahren,
eine Verfahrensweise, ein Programm, eine Routine, einen Prozess,
einen Algorithmus, eine Formel oder einen Ausdruck, der implementiert
oder in eine Hardware-Struktur (z. B., Flash-Speicher oder Festspeicher)
aufgenommen ist. Beispiele für
Firmware sind Mikrocode, beschreibbarer Steuerspeicher und mikroprogrammierte
Struktur.
-
1 zeigt
Informationsverarbeitungssystem 100, in dem Transaktionen
gemäß einer
Ausführungsform
der vorliegenden Erfindung eingeführt werden können. Informationsverarbeitungssystem 100 enthält bloße Plattform-Hardware 110,
was jede Vorrichtung sein kann, die fähig ist, irgendein OS, ein VMM
oder eine andere Software auszuführen.
Zum Beispiel kann bloße
Plattform-Hardware 110 die Hardware eines Personalcomputers,
eines Mainframe-Computers, eines tragbaren Computers, eines tragbaren
Gerätes,
einer Set-Top-Box, eines Servers oder jedes anderen Computersystems
sein. In dieser Ausführungsform
enthält
bloße
Plattform-Hardware 110 Prozessor 120, Chipsatz 130,
Systemspeicher 140 und den Geräte-Controller 150.
-
Prozessor 120 kann
jede Komponente sein, die einen oder mehrere Ausführungskerne
hat, wobei jeder Ausführungskern
auf einer Vielfalt von verschiedenen Arten von Prozessoren beruhen
kann, einschließlich
einem Allzweckmikroprozessor, wie beispielsweise einem Prozessor
der Intel® Pentium® Prozessor-Familie,
Itanium® Prozessor-Familie
oder einer anderen Prozessor-Familie der Intel® Corporation
oder einem anderen Prozessor von einer anderen Firma oder einem
Digitalsignal-Prozessor oder Mikrocontroller. Obwohl 1 nur
einen solchen Prozessor 120 zeigt, kann bloße Verarbeitungshardware 110 jede
Anzahl an Prozessoren enthalten, einschließlich jeder Anzahl an Mehrkernprozessoren,
jeder mit irgendeiner Anzahl an Ausführungskernen und irgendeiner
Anzahl an Multithread-Prozessoren (jeder mit irgendeiner Anzahl
an Threads).
-
Chipsatz 130 kann
jede Gruppe von Schaltungen und Logik sein, die Speicheroperationen,
Eingabe-/Ausgabe-Operationen, Konfigurations-, Kontroll-, interne
oder externe Schnittstellen-, Verbindungs- oder Kommunikationsfunktionen
(z. B. „Glue”-Logik und Bus-Brücken) und/oder
irgendwelche ähnlichen
Funktionen für
den Prozessor 120 und/oder System 100 unterstützt. Individuelle
Elemente des Chipsatzes 130 können zusammen auf einem einzelnen
Chip, einem Chip-Paar, dispergiert unter mehren Chips und/oder teilweise,
komplett, redundant oder gemäß einem
dezentralisierten Ansatz in einen oder mehrere Prozessoren, einschließlich Prozessor 120,
integriert sein. Bei dieser Ausführungsform
enthält
Chipsatz 130 Virtualisierungslogik 132, um Transaktionen
gemäß einer
Ausführungsform
der Erfindung, wie nachfolgend beschrieben, einzuführen. Bei
anderen Ausführungsformen
kann Virtualisierungslogik 132 an anderer Stelle im System 100 enthalten
sein.
-
Systemspeicher 140 kann
jedes Medium enthalten auf dem Information, wie beispielsweise Daten
und/oder Anweisungen, gespeichert sind, wie beispielsweise statische
oder dynamische Random Access Memory, halbleiterbasierte Read-only-Memory
oder Flash-Speicher, magnetische oder optische Plattenspeicher oder
jede andere Art von Medium, das von Prozessor 120 gelesen
werden kann, oder jede Kombination solcher Medien.
-
Geräte-Controller 150 kann
einen Controller für
jede Art von I/O, peripheres oder anderes Gerät repräsentieren, das von der Gast-Software,
die in einem VM arbeitet, verwendet werden kann, wie beispielsweise
ein Festplatten-Controller, ein Audiocontroller, ein Netzwerkschnittstellen-Controller,
ein Peripheriebus-Controller usw. Geräte-Controller 150 kann
in ein diskretes Bauelement aufgenommen werden oder in einer integrierten
Komponente mit irgendwelchen anderen Geräte-Controllern enthalten sein. Bei
einer Ausführungsform
kann der Geräte-Controller 150 eine
Funktion in einem mehrfunktionalen I/O, peripheren oder anderen
Geräte-Controller
repräsentieren.
Geräte-Controller 150 kann
Konfigurationsspeicher 152 enthalten, um Konfigurationsinformation
zu speichern.
-
Prozessor 120,
Chipsatz 130, Systemspeicher 140 und Geräte-Controller 150 können miteinander
gekoppelt sein oder gemäß jedem
bekannten Ansatz miteinander kommunizieren, wie beispielsweise direkt
oder indirekt durch eine oder mehrere parallele, sequenzielle, pipeline-artige,
aperiodische, synchrone, verdrahtete, drahtlose oder andere Bus- oder
Punkt-Zu-Punkt-Verbindungen oder Mittel zur Kommunikation. Zum Beispiel
können
bei dieser Ausführungsform
Prozessor 120 und Chipsatz 130 mit dem Systemspeicher 140 durch
die Schnittstelle 170 gekoppelt sein und Chipsatz 130 kann
mit dem Geräte-Controller 150 durch
die Schnittstelle 180 gekoppelt sein. System 100 kann
auch jede Anzahl an zusätzlichen
Agenten, Komponenten oder Verbindungen enthalten.
-
System 100 enthält auch
VMM 160 und die VMs 162 und 164. VMM 160 kann
jede Software, Firmware oder jeder Hardware-Host sein, der installiert
ist, um auf Plattform-Hardware 110 zu arbeiten oder durch
diese zugänglich
zu sein, um VMs, d. h. Abstraktionen von bloßer Plattform-Hardware 110,
zu Gästen
zu präsentieren
oder VMs anderweitig zu schaffen, VMs zu handhaben und Virtualisierungsrichtlinien
innerhalb des Systems 100 zu implementieren. Bei anderen
Ausführungsformen
kann ein Host jeder VMM, Hypervisor, OS oder andere Software, Firmware
oder Hardware sein, die die bloße Plattform-Hardware 110 steuern
kann. Ein Gast kann jedes OS, jeder VMM, einschließlich einer
weiteren Instanz von VMM 160, jeder Hypervisor oder jede
Anwendung oder andere Software sein.
-
Jeder
Gast erwartet, auf Ressourcen, wie beispielsweise Prozessor und
Plattform-Register, Speicher
und Eingabe-/Ausgabegeräte
entweder von der bloßen
Plattform-Hardware 110 oder
einer Plattform virtualisiert durch VMM 160 gemäß der Architektur
des Prozessors und der im VM präsentierten Plattform
zuzugreifen. 1 zeigt die zwei VMs 162 und 164 auf
denen je ein Gast-OS und jede Anzahl an Gast-Anwendungen installiert
sein kann. Obwohl 1 zwei VMs zeigt, kann jede
Anzahl von VMs erzeugt und jede Anzahl an Gast-OSen und Gast-Anwendungen
installiert werden, um auf jeder VM im Rahmen der vorliegenden Erfindung
zu arbeiten.
-
Zurückkehrend
zu Chipsatz 130, Virtualisierungslogik 132 kann
jede Schaltung, Logik oder andere Struktur, wie beispielsweise Firmware
enthalten, um den physischen Geräte-Controller 150 als mehrere
virtuelle Geräte-Controller
zu repräsentieren,
von denen jeder durch VMM 160 zu einer unterschiedlichen
VM zugeordnet sein kann. Chipsatz 130 enthält auch
Konfigurationsspeicher 134 und Datenspeicher 136.
Konfigurationsspeicher 134 und Datenspeicher 136 können jedes
Medium enthalten, auf dem Information gespeichert werden kann. Zum
Beispiel. kann Konfigurationsspeicher 134 programmierbare
Register enthalten und Datenspeicherung 136 kann statische
Random Access Memory enthalten. Virtualisierungslogik 132 kann
Information vom Konfigurationsspeicher 134 und/oder Datenspeicher 136 lesen
und in sie schreiben, um Information bezüglich dem Status des Auffangens
und Einführens
von Transaktionen auf Schnittstelle 170 und 180 zu
bestimmen und aufrechtzuerhalten.
-
Chipsatz 130 kann
Transaktionen auf der Schnittstelle 180 empfangen, die
für Systemspeicher 140 vorgesehen
sind, und auf der Schnittstelle 170 diejenigen, die für den physischen
Geräte-Controller 150 vorgesehen
sind. Das beabsichtigte Ziel für
die Transaktion kann durch Information, die von der Transaktion
vermittelt wird, wie beispielsweise der Inhalt des Adressfeldes,
angezeigt werden. Um jedoch die Virtualisierung von Geräte-Controller 150 zu
unterstützen,
kann die Transaktion durch die Virtualisierungslogik 132 aufgefangen
werden. Im Zusammenhang mit dem Auffangen einer Transaktion kann
Virtualisierungslogik 132 eine Adresse oder einen Identifier
in Verbindung mit oder verwendet vom physischen Geräte-Controller 150 an
eine Adresse oder einen Identifier in Verbindung mit oder verwendet
von einem der virtuellen Geräte-Controller, abstrahiert vom
physischen Geräte-Controller 150, übersetzen oder
zuordnen. Virtualisierungslogik 132 kann auch jede andere
Verarbeitung ausführen,
die mit der aufgefangenen Transaktion verbunden sein kann. Die Übersetzung,
Zuordnung oder eine andere Verarbeitungsinformation können im
Konfigurationsspeicher 134 oder im Datenspeicher 136 gespeichert
werden. Virtualisierungslogik 132 kann dann als ein Agent entweder
auf der Schnittstelle 170 oder Schnittstelle 180 agieren,
indem sie eine neue Transaktion im Auftrag dieses virtuellen Geräte-Controllers
initiiert oder einführt.
-
Bei
einer Ausführungsform
zum Beispiel, wo der physische Geräte-Controller 150 mit
dem Chipsatz 130 durch einen Peripheral Component Interconnect-(„PCI Express”)-Bus gekoppelt ist,
kann ein Transaktion-Header einen einzigartigen Identifier bezüglich der
Bus-Nummer, der Gerätenummer
und der Funktionsnummer („BDF”) enthalten,
die dem Geräte-Controller 150 durch
Systemkonfigurationssoftware oder Firmware zugewiesen sind. Virtualisierungslogik 132 kann
einen unterschiedlichen BDF für
jeden vom physischen Geräte-Controller 150 abstrahierten virtuellen
Geräte-Controller
verwenden. So kann sie Transaktionen mit dem BDF des physischen
Geräte-Controllers 150 auffangen
und Transaktionen mit den BDFs der entsprechenden virtuellen Geräte-Controller
einführen
oder umgekehrt.
-
2 zeigt
Verfahren 200, in dem eine Transaktion gemäß einer
Ausführungsform
der vorliegenden Erfindung eingeführt werden kann. In der Beschreibung
der Verfahrensausführungsform
von 2 kann Bezug auf Elemente der Systemausführungsform
von 1 genommen werden; Verfahrensausführungsformen
der Erfindung sind jedoch in keiner Weise darauf beschränkt.
-
In
Kasten 210 ist Virtualisierungslogik 132 konfiguriert,
um Transaktionen aufzufangen, die auf der Schnittstelle 170 initiiert
und zum physischen Geräte-Controller 150 geleitet
wurden, und Transaktionen, die auf der Schnittstelle 180 vom
physischen Geräte-Controller 150 initiiert
wurden. Bei einer Ausführungsform
kann Virtualisierungslogik 132 eine Stelle im Konfigurationsspeicher 134 enthalten,
der mit der Basisadresse oder einem anderen Indikator programmiert
sein kann, um aufzufangende Transaktionen zu identifizieren.
-
In
Kasten 220 erkennt Virtualisierungslogik 132 eine
erste Transaktion auf der Schnittstelle 170, die zu einem
virtuellen Geräte-Controller
geleitet wird und den physischen Geräte-Controller 150 repräsentiert.
In Kasten 222 fängt
Virtualisierungslogik die erste Transaktion auf, anstatt sie an
die Schnittstelle 180 weiterzuleiten, damit sie der physische
Geräte-Controller 150 empfängt. In
Kasten 224 führt
Virtualisierungslogik 132 eine Übersetzung oder eine andere Verarbeitung
bezogen auf das Virtualisieren des physischen Geräte-Controllers 150 aus.
In Kasten 226 führt
Virtualisierungslogik eine zweite Transaktion auf die Schnittstelle 180 ein,
die zum physischen Geräte-Controller 150 geleitet
wird. Die zweite Transaktion soll die übersetzte oder anderweitig
verarbeitete Information, Nachricht oder Anfrage von der ersten Transaktion
zum physischen Geräte-Controller 150 vermitteln,
außer
dass Virtualisierungslogik die Übersetzung
oder eine andere Verarbeitung ausgeführt hat, die am Virtualisieren
des physischen Geräte-Controllers 150 beteiligt
ist.
-
In
Kasten 230 erkennt Virtualisierungslogik 132 eine
dritte Transaktion auf der Schnittstelle 180, die vom physischen
Geräte-Controller 150 eingeleitet wird.
In Kasten 232 fängt
Virtualisierungslogik die dritte Transaktion auf, anstatt sie an
Schnittstelle 170 weiterzuleiten. In Kasten 234 führt Virtualisierungslogik 132 eine Übersetzung
oder eine andere Verarbeitung bezogen auf das Virtualisieren des
physischen Geräte-Controllers 150 aus.
In Kasten 236 führt
Virtualisierungslogik eine vierte Transaktion im Auftrag eines virtuellen
Geräte-Controllers,
der dem physischen Geräte-Controller 150 entspricht,
auf der Schnittstelle 170 ein. Die vierte Transaktion soll
die übersetzte
oder anderweitig verarbeitete Information, Nachricht oder Anfrage
von der dritten Transaktion des physischen Geräte-Controllers 150 vermitteln, außer dass
Virtualisierungslogik die Übersetzung oder
eine andere Verarbeitung ausgeführt
hat, die am Virtualisieren des physischen Geräte-Controllers 150 beteiligt
ist.
-
Im
Rahmen der vorliegenden Erfindung kann Verfahren 200 mit
den gezeigten Kasten ausgelassen, mit zusätzlichen Kasten hinzugefügt oder
mit einer Kombination aus umgeordneten, ausgelassenen oder zusätzlichen
Kasten ausgeführt
werden.
-
Jede
Komponente oder jeder Teil einer Komponente, der gemäß einer
Ausführungsform
der vorliegenden Erfindung konzipiert ist, kann in verschiedenen
Stufen von der Erstellung zur Simulation zur Fertigung konzipiert
sein. Daten, die ein Design repräsentieren,
können
das Design auf mehrere Weise repräsentieren. Zuerst einmal, wie
es bei Simulationen zweckmäßig ist,
kann die Hardware repräsentiert werden,
indem man eine Hardware-Beschreibungssprache oder eine andere Funktionsbeschreibungssprache
verwendet. Zusätzlich
oder alternativ können
Schaltungslevel-Typen mit Logik- und/oder Transistor-Gattern irgendwann
während
des Design-Prozesses hergestellt werden. Des Weiteren erreichen die
meisten Designs irgendwann einen Level, wo sie mit Daten modelliert
werden können,
die die physische Anordnung von verschiedenen Geräten repräsentieren.
Wenn konventionelle Halbleiter-Fertigungsverfahren verwendet werden,
können
die Daten, die das Geräteanordnungsmodell
repräsentieren,
diejenigen Daten sein, die die Anwesenheit oder Abwesenheit von
verschiedenen Funktionen auf verschiedenen Maskenschichten für Masken
angeben, die man verwendet, um einen integrierten Schaltkreis herzustellen.
-
Bei
jeder Repräsentation
des Designs können
die Daten in jeder Form eines maschinenlesbaren Mediums gespeichert
sein. Bei einer optischen oder elektrischen Welle, die moduliert
oder anderweitig generiert ist, um solche Information zu übertragen, kann
ein Speicher oder ein magnetisches oder optisches Speichermedium,
wie beispielsweise eine Disk, das maschinenlesbare Medium sein.
Irgendeines dieser Medien kann das Design oder eine andere in einer
Ausführungsform
der vorliegenden Erfindung verwendete Information „tragen” oder „anzeigen”. Wenn
man eine elektrische Trägerwelle überträgt, die
die Information anzeigt oder trägt,
sodass das Kopieren, Puffern oder die Weiterübertragung des elektrischen
Signals ausgeführt
wird, wird eine neue Kopie gemacht. Somit können die Aktionen eines Kommunikationsanbieters
oder eines Netzwerkanbieters die Herstellung von Kopien eines Artikels
darstellen, z. B. einer Trägerwelle,
die die Techniken der vorliegenden Erfindung in sich einschließen.
-
Somit
wurden Vorrichtungen, Verfahren und Systeme offenbart, um Transaktionen
einzuführen und
damit die Virtualisierung eines physischen Geräte-Controllers zu unterstützen. Während bestimmte Ausführungsformen
beschrieben und in den begleitenden Zeichnungen gezeigt wurden,
versteht es sich, dass solche Ausführungsformen rein veranschaulichend
sind und die breite Erfindung in keiner Weise einschränken, und
dass diese Erfindung nicht auf die spezifisch gezeigten Bauarten
und Anordnungen begrenzt ist, da der fachkundigen Person beim Studieren
dieser Offenlegung verschiedene andere Modifizierungen einfallen
können.
In einem technologischen Bereich, der von schnellem Wachstum und schwer
vorhersehbaren zukünftigen
Entwicklungen geprägt
ist, können
die offengelegten Ausführungsformen
in der Anordnung und im Detail ohne Weiteres durch den Einsatz von
technologischen Entwicklungen modifiziert werden, ohne von den Grundsätzen der
vorliegenden Erfindung oder dem Rahmen der begleitenden Ansprüche abzuweichen.