Die „Embedded Hypervisor“-Software verhält sich nicht wie ein herkömmlicher Hypervisor: Sie verfügt nicht über Scheduling-Services, die es ermöglichen würden, gleichzeitig mehrere Betriebssysteme auf der gleichen physikalischen CPU laufen zu lassen. Der Hypervisor beschränkt sich ausschließlich auf die Lösung der Probleme, die mit der Partitionierung und Isolierung zu tun haben. Der Hypervisor stellt mit Hilfe der beiden folgenden Mechanismen Dienste für die Guest-Software bereit: Emulation und ein spezieller Systemaufruf, der hier Hypercall (oder auch „hcall“) genannt wird.
Emulation heißt, dass normale CPU-Befehle und -Register benutzt werden, um Dienste bereitzustellen, ohne dass für die Guest-Software erkennbar wird, dass sie unter einem Hypervisor läuft. So wird zum Beispiel die Ausführung eines „tlbwe“-Befehls vom Hypervisor abgefangen, da es sich hier um einen Befehl handelt, der den Privilegien des Hypervisors unterliegt. Der Hypervisor führt die „tlbwe“-Instruktion für den Gast aus und gibt das Ergebnis an den Gast zurück, für den nicht sichtbar wird, dass der Dienst für ihn ausgeführt wurde. Hypercalls sind Mechanismen, über die der Hypervisor der Guest-Software eine API für verschiedene Dienste präsentiert.
Die virtuelle CPU
Eine Guest-Software, die unter einer Partition abläuft, die durch die „Embedded Hypervisor“-Software erstellt wurde, sieht einen Satz von „Power Architecture“-Befehlen und -Registern, die denen einer e500mc-CPU entsprechen. Allerdings sind einige Ressourcen nicht vorhanden. Diese Konfiguration wird als „virtuelle CPU“ bezeichnet. Insbesondere die Virtualisierungs-Erweiterungen des e500mc sind nicht vorhanden und für die Guest-Software daher nicht zugänglich. Normale, auf Supervisor-Ebene laufende Software für den e500mc-Kern kann in der Regel unverändert auch unter dem Hypervisor ausgeführt werden.
Standardfunktionen der e500mc-CPU können ohne Änderungen der Guest-Software verwendet werden, unter anderem Befehle und Register, die Supervisor-Privilegien erfordern, ebenso wie Exception Handling und Interrupt Handling, CPU-Timer-Funktionen und die Memory Management Unit. Um aber für den Supervisor-Code das gleiche Programmiermodell zwischen Gast und CPU bereitzustellen, muss der Hypervisor einige Funktionen der zugrundeliegenden Hardware-Architektur wie Interrupt-Controller und Debugger emulieren.
Für das Debuggen der Guest-Software bietet die „Embedded Hypervisor“-Software zwei Möglichkeiten. Im ersten Modus stellt die virtuelle CPU der Guest-Software den vollständigen Satz von e500mc-Debugger-Ressourcen und -Interrupts zur Verfügung. Ein Gast-Debug-Agent kann so die Debugger-Funktionen des e500mc ohne Änderungen nutzen. Im zweiten Modus übernimmt die Hypervisor-Software die Kontrolle über die Debugger-Ressourcen des e500mc. Ein „Debug Agent“, der Teil des Hypervisors ist, stellt die Schnittstelle für einen Host Debugger wie GDB (GNU Debugger) dar, mit dem sich Guest-Software mittels eines Byte Channels als Kommunikationskanal debuggen lässt.
I/Os und Interrupts
In der Regel werden I/O-Funktionen einer Partition direkt zugewiesen und von dieser vereinnahmt. Dies heißt: Die I/O-Funktion ist eine private Ressource dieser Partition und steht somit anderen Partitionen nicht zur Verfügung. So kann ein Betriebssystem direkt mit einem ganz normalen Device-Treiber – und somit praktisch ohne Mehraufwand – auf eine I/O-Funktion zugreifen.
Die „Embedded Hypervisor“-Software konfiguriert den Qor-IQ-Kommunikationsprozessor so, dass externe Interrupts direkt von den Partitionen empfangen werden und von der Guest-Software ohne zusätzliche, durch den Hypervisor verursachte Latenzzeiten behandelt werden können. Der QorIQ-Prozessor der P4-Baureihe verfügt über eine neuartige Funktion: das External Proxy Register (EPR). Der Interrupt-Handler der Guest-Software kann darüber den Interrupt-Vektor für einen externen Interrupt auslesen, ohne dass er auf den Interrupt-Controller zugreifen muss.
Partition Management Services
Die „Embedded Hypervisor“-Software bietet Mechanismen, mit deren Hilfe eine Partition andere Partitionen verwalten kann. Eine Manager-Partition kann mit so genannten „hcalls“ andere Partitionen starten, stoppen oder neu starten. Wurde eine Partition gestoppt, so kann die Manager-Partition Daten in die bzw. aus der verwalteten Partition kopieren. Der Manager kann beispielsweise Betriebssystem-Images usw. in die verwaltete Partition kopieren.
In einer Manager-Partition können Interrupts für die verwalteten Partitionen auflaufen. Diese signalisieren, dass sich etwa der Zustand der verwalteten Partition auf „Run“ oder „Stop“ geändert hat, oder dass der „Watchdog“ einer verwalteten Partition abgelaufen ist, oder um zu signalisieren, dass die verwaltete Partition einen Neustart verlangt.