Benutzer-Werkzeuge

Webseiten-Werkzeuge


prozessor-architekturen

Prozessor-Architekturen

Als Hardware-Emulator emuliert QEMU unterschiedliche Architekturen. Bei einigen Linux-Distributionen muss dazu das Paket qemu-kvm-extras installiert sein. QEMU übersetzt nativen Assembler-Code des Gast-Prozessors, zum Beispiel SPARC, in eine Sequenz von Mikro-Operationen (micro operations). In einem zweiten Schritt werden diese Mikro-Operationen in ausführbaren Code für den Host-Prozessor, zum Beispiel x86, umgewandelt und in einen Translation-Block (TB) gepackt. Diese Translation-Blöcke werden in einen Cache gehalten und können wieder verwendet werden. Dadurch verringert sich die Ausführungszeit. Emuliert werden diese Architekturen:

  • PC (x86- oder x86_64-Prozessor)
  • ISA PC (alter PC ohne PCI-Bus)
  • PREP (PowerPC-Prozessor)
  • G3 Beige PowerMac (PowerPC-Prozessor)
  • Mac99 PowerMac (PowerPC-Prozessor)
  • Sun4m/Sun4c/Sun4d (32-Bit Sparc-Prozessor)
  • Sun4u/Sun4v (64-Bit Sparc-Prozessor)
  • Malta Board (32-Bit und 64-Bit MIPS-Prozessoren)
  • MIPS Magnum (64-Bit MIPS-Prozessor)
  • ARM Integrator/CP (ARM)
  • ARM Versatile Baseboard (ARM)
  • ARM RealView Emulation Baseboard (ARM)
  • Spitz, Akita, Borzoi, Terrier und Tosa PDAs (PXA270-Prozessor)
  • Luminary Micro LM3S811EVB (ARM Cortex-M3)
  • Luminary Micro LM3S6965EVB (ARM Cortex-M3)
  • Freescale MCF5208EVB (ColdFire V2).
  • Arnewsh MCF5206 Evaluation Board (ColdFire V2).
  • Palm Tungsten|E PDA (OMAP310-Prozessor)
  • N800- und N810-Tabletts (OMAP2420-Prozessor)
  • MusicPal (MV88W8618 ARM-Prozessor)
  • Gumstix Connex und Verdex Motherboards (PXA255/270).
  • Siemens SX1 Smartphone (OMAP310-Prozessor)
  • Syborg SVP base model (ARM Cortex-A8)
  • AXIS-Devboard88 (CRISv32 ETRAX-FS)
  • Petalogix Spartan 3aDSP1800 MMU Ref Design (MicroBlaze).

x86

Die meisten PC-Betriebssysteme arbeiten mit der x86-Architektur. Die x86-Architektur baut auf einem CISC-Befehlssatz auf. Die Abkürzung CISC steht für Complex Instruction Set Computing (Rechnen mit komplexem Befehlssatz). Mit Intels erster 16-Bit-CPU, dem 8086, wurde die x86-Architektur 1978 eingeführt. Durch den enormen Erfolg des IBM-PCs und seiner Nachbauten wurde die x86-Architektur innerhalb weniger Jahre zu einer der erfolgreichsten Prozessorarchitekturen. Außer Intel produzieren auch andere Hersteller x86-kompatible CPUs, wie zum Beispiel die Firma AMD. Mit dem 80386 führte Intel 1985 die erste x86-CPU mit einer 32-Bit-Architektur ein. 2003 brach für x86 die 64-Bit-Ära an, diesmal auf Initiative von AMD. Der 64-Bit-Standard heißt AMD64 und wurde unter dem Namen EM64T auch von Intel übernommen. Für die x86-Architektur wird folgende Hardware emuliert:

  • SeaBIOS (ab QEMU 0.12.0), PC-BIOS vom Bochs-Projekt (bis QEMU 0.11)
  • Plex86/Bochs LGPL VGA BIOS
  • Symmetrisches Multiprozessorsystem (SMP) mit bis 255 CPUs
  • PC-Bus: PCI oder ISA-System (i440FX Host PCI Bridge und PIIX3 PCI zu ISA Bridge)
  • zwei PCI-IDE-Schnittstellen mit Unterstützung für maximal vier (virtuelle) Festplatten beziehungsweise CD/DVD-ROMs
  • zwei Diskettenlaufwerke
  • CD-/DVD-Laufwerk
  • Grafikkarte (Cirrus CLGD 5446 PCI VGA-Karte oder Standard-VGA-Grafikkarte mit Bochs-VESA-BIOS-Extension)
  • PS/2-Maus und -Tastatur
  • PCI-UHCI-USB-Controller und virtueller USB-Hub
  • PCI-/ISA-Netzwerkadapter
  • Netzwerk-Karten (Intel e1000 und andere)
  • Parallel-Port
  • Serielle Ports
  • Soundkarten (Creative Soundblaster 16, ENSONIQ AudioPCI ES1370 PCI, Intel 82801AA AC97, Adlib OPL2 Yamaha YM3812, Gravis Ultrasound GF1, CS4231A)
  • Supervisor-Mode Execution Prevention (SMEP) von Intel
  • Funktionalitäten von VIA-CPUs.

Die 32-Bit-Version der x86-Prozessorarchitektur wird mit qemu aufgerufen. In späteren QEMU-Versionen soll qemu-system-i386 verwendet werden.

Host ~$ qemu

Die Option -machine type= beziehungsweise -M (vor QEMU 0.15) ermöglicht die Auswahl des emulierten Maschinen-Typs (PC-Bus-Architektur). Wird die Angabe zum Maschinen-Type weggelassen oder die Default-Option -machine type=pc angegeben, wird ein heutiger Standard-PC mit PCI-Bus emuliert. Die möglichen Maschinen-Typen zeigt -machine ? an. Die Maschinen-Typen xenfv und xenpv stehen nur bei aktiviertem Xen-Support zur Verfügung.

Host ~$ qemu -machine ?

Supported machines are:

pc         Standard PC (alias of pc-0.14)

pc-0.14    Standard PC (default)

pc-0.13    Standard PC

pc-0.12    Standard PC

pc-0.11    Standard PC, qemu 0.11

pc-0.10    Standard PC, qemu 0.10

isapc      ISA-only PC

xenfv      Xen Fully-virtualized PC

xenpv      Xen Para-virtualized PC

Bei älteren QEMU-Version ist -M ? zu verwenden.

Host ~$ qemu -M ?

Mit neueren QEMU-Versionen ändert sich die emulierte Hardware. Erhält QEMU ein Update, haben einige Gast-Systemen Probleme mit der geänderten Hardware. Zum Beispiel müssen manche Microsoft Windows-Systeme dann neu aktiviert werden. Damit sich die emulierte Hardware nicht ändert, ist der Maschinen-Typ an die QEMU-Version zu binden. Im folgenden Beispiel wird der Maschinen-Typ pc der QEMU-Version 0.11.0 vorgegeben.

Host ~$ qemu -machine type=pc-0.11

Bei älteren QEMU-Version ist -M pc-0.11 zu verwenden.

Host ~$ qemu -M pc-0.11

Mit der Option -machine type=isapc wird ein PC-Modell mit dem älteren ISA-Bus (Industry Standard Architecture) emuliert. Dies kann bei älteren Betriebssystemen, bei der Emulation von Industrie-PCs und eingebetteten Systemen sinnvoll sein.

Host ~$ qemu -M isapc

Die Option -cpu ermöglicht die Auswahl des Prozessor-Typs (CPU - Central Prozessing Unit). Die möglichen Typen zeigt -cpu ? an.

Host ~$ qemu -cpu ?

x86           [n270]

x86         [athlon]

x86       [pentium3]

x86       [pentium2]

x86        [pentium]

x86            [486]

x86        [coreduo]

x86          [kvm32]

x86         [qemu32]

x86          [kvm64]

x86       [core2duo]

x86         [phenom]

x86         [qemu64]

Ein 486-Prozessor wird mit -cpu 486 emuliert.

Host ~$ qemu -cpu 486

Zur Emulation von 64-Bit-Prozessoren dient der Befehl qemu-system-x86_64. Wird unter einem 32-Bit-Host mit qemu-system-x86_64 eine 64-Bit-Architektur emuliert, stehen weder KVM noch KQEMU zur Verfügung.

Host ~$ qemu-system-x86_64

Die möglichen Maschinen-Typen zeigt -machine ? an.

Host ~$ qemu-system-x86_64 -machine ?

Supported machines are:

pc         Standard PC (alias of pc-0.14)

pc-0.14    Standard PC (default)

pc-0.13    Standard PC

pc-0.12    Standard PC

pc-0.11    Standard PC, qemu 0.11

pc-0.10    Standard PC, qemu 0.10

isapc      ISA-only PC

xenfv      Xen Fully-virtualized PC

xenpv      Xen Para-virtualized PC

Die möglichen CPU-Typen zeigt -cpu ? an.

Host ~$ qemu-system-x86_64 -cpu ?

x86       Opteron_G3

x86       Opteron_G2

x86       Opteron_G1

x86          Nehalem

x86           Penryn

x86           Conroe

x86           [n270]

x86         [athlon]

x86       [pentium3]

x86       [pentium2]

x86        [pentium]

x86            [486]

x86        [coreduo]

x86          [kvm32]

x86         [qemu32]

x86          [kvm64]

x86       [core2duo]

x86         [phenom]

x86         [qemu64]

Zusätzliche CPU-Definitionen werden dem CPU-Typ nach einem Komma übergeben. Mit der Default-Einstellung +svm werden Prozessoren mit Hardware-Virtualisierungstechniken emuliert. Das heißt, das Gast-System kann als Host-System für weitere KVM- beziehungsweise Xen-Instanzen dienen.

Host ~$ qemu-system-x86_64 -cpu qemu64,+svm

Soll die Emulation dieser Hardware-Virtualisierungstechnik unterdrückt werden, ist -svm vorzugeben.

Host ~$ qemu-system-x86_64 -cpu qemu64,-svm

Eine schnellere Variante gegenüber dieser Emulation ergibt sich durch die KVM hardware-unterstützte Virtualisierung (siehe unten). Dazu muss das Host-System über AMD-Prozessoren verfügen und das Kernel-Modul kvm_amd mit den Optionen nested=1 und npt=1 geladen sein (siehe http://qemu-buch.de/d/Installation). Weiterhin wird QEMU ab der Version 0.14.0 benötigt.

Host ~$ qemu-system-x86_64 -machine type=pc,accel=kvm -cpu qemu64,+svm

Im Gast-System (64-Bit-Linux) wird das SVM-Flag überprüft.

Gast ~$ grep „svm“ /proc/cpuinfo

Werden Zeilen mit svm ausgegeben, können im Gast-System die KVM-Module geladen werden.

SPARC

Die SPARC-Architektur (Scalable Processor ARChitecture) wird von der Firma Sun Microsystems (jetzt Oracle Corporation) ab 1985 entwickelt. SPARC-Prozessoren sind hauptsächlich in den Produkten von Sun zu finden. Neben SunOS beziehungsweise Solaris können auf SPARC-Systemen Linux oder BSD-Varianten eingesetzt werden. 1995 wurde die ursprüngliche 32-Bit-Architektur auf 64-Bit erweitert und unter dem Namen UltraSPARC vermarktet. Im QEMU-Paket ist das Programm qemu-system-sparc zur Emulation von 32-Bit-SPARC-Systemen enthalten. Folgende Sun4m-Architekturen werden emuliert:

  • SPARCstation 4
  • SPARCstation 5
  • SPARCstation 10
  • SPARCstation 20
  • SPARCserver 600MP
  • SPARCstation LX
  • SPARCstation Voyager
  • SPARCclassic
  • SPARCbook

Die Emulationen von SPARCstation 2 (sun4c), SPARCserver 1000 und SPARCcenter 2000 (sun4d) sind auch möglich. Folgende Sun4m-, Sun4c- und Sun4d-Hardware wird emuliert:

  • IOMMU oder IO-UNITs
  • TCX-Frame-Buffer
  • Lance (Am7990) Ethernet Netzwerk-Karte
  • NVRAM M48T02/M48T08
  • Slave I/O: Timers, Interrupt Controller, Zilog Serial Ports, Tastatur und Power/Reset-Logic
  • ESP-SCSI-Controller mit Hard-Disk- und CD-ROM-Support
  • Floppy-Laufwerk (nicht für SS-600MP)
  • CS4231-Sound-Device (nur für SS-5)

Die maximale Größe des Arbeitsspeichers (RAM) ist abhängig vom Maschinentyp. Bei SS-5 kann der RAM maximal 256 MByte betragen, sonst 2047 MByte. Die Maschinen-Typen zeigt -machine ? an.

Host ~$ qemu-system-sparc -machine ?

Supported machines are:

leon3_generic Leon-3 generic

SS-5       Sun4m platform, SPARCstation 5 (default)

SS-10      Sun4m platform, SPARCstation 10

SS-600MP   Sun4m platform, SPARCserver 600MP

SS-20      Sun4m platform, SPARCstation 20

Voyager    Sun4m platform, SPARCstation Voyager

LX         Sun4m platform, SPARCstation LX

SS-4       Sun4m platform, SPARCstation 4

SPARCClassic Sun4m platform, SPARCClassic

SPARCbook  Sun4m platform, SPARCbook

SS-1000    Sun4d platform, SPARCserver 1000

SS-2000    Sun4d platform, SPARCcenter 2000

SS-2       Sun4c platform, SPARCstation 2

qemu-system-sparc emuliert bis zu 16 CPUs. Linux begrenzt aber die Anzahl auf maximal vier CPUs. Die möglichen CPU-Typen zeigt -cpu ? an.

Host ~$ qemu-system-sparc -cpu ?

Sparc  Fujitsu MB86900 IU 00000000 FPU 00080000 MMU 00000000 NWINS 7 -swap -mul -div -flush -fsqrt -fmul 

Sparc  Fujitsu MB86904 IU 04000000 FPU 00080000 MMU 04000000 NWINS 8 

Sparc  Fujitsu MB86907 IU 05000000 FPU 00080000 MMU 05000000 NWINS 8 

Sparc       LSI L64811 IU 10000000 FPU 00020000 MMU 10000000 NWINS 8 -mul -div -flush -fmul 

Sparc  Cypress CY7C601 IU 11000000 FPU 00060000 MMU 10000000 NWINS 8 -mul -div -flush -fmul 

Sparc  Cypress CY7C611 IU 13000000 FPU 00060000 MMU 10000000 NWINS 8 -mul -div -flush -fmul 

Sparc  TI MicroSparc I IU 41000000 FPU 00080000 MMU 41000000 NWINS 7 -fsmuld 

Sparc TI MicroSparc II IU 42000000 FPU 00080000 MMU 02000000 NWINS 8 

Sparc TI MicroSparc IIep IU 42000000 FPU 00080000 MMU 04000000 NWINS 8 

Sparc TI SuperSparc 40 IU 41000000 FPU 00000000 MMU 00000800 NWINS 8 

Sparc TI SuperSparc 50 IU 40000000 FPU 00000000 MMU 01000800 NWINS 8 

Sparc TI SuperSparc 51 IU 40000000 FPU 00000000 MMU 01000000 NWINS 8 

Sparc TI SuperSparc 60 IU 40000000 FPU 00000000 MMU 01000800 NWINS 8 

Sparc TI SuperSparc 61 IU 44000000 FPU 00000000 MMU 01000000 NWINS 8 

Sparc TI SuperSparc II IU 40000000 FPU 00000000 MMU 08000000 NWINS 8 

Sparc       Ross RT625 IU 1e000000 FPU 00020000 MMU 1e000000 NWINS 8 

Sparc       Ross RT620 IU 1f000000 FPU 00020000 MMU 1f000000 NWINS 8 

Sparc        BIT B5010 IU 20000000 FPU 00000000 MMU 20000000 NWINS 8 -mul -div -flush -fmul 

Sparc Matsushita MN10501 IU 50000000 FPU 00000000 MMU 50000000 NWINS 8 -swap -div -flush -fmul 

Sparc     Weitek W8601 IU 90000000 FPU 00060000 MMU 10000000 NWINS 8 

Sparc            LEON2 IU f2000000 FPU 00080000 MMU f2000000 NWINS 8 

Sparc            LEON3 IU f3000000 FPU 00080000 MMU f3000000 NWINS 8 

Default CPU feature flags (use '-' to remove): float swap mul div flush fsqrt fmul fsmuld

Available CPU feature flags (use '+' to add): float128 vis1 vis2 hypv cmt gl

Numerical features (use '=' to set): iu_version fpu_version mmu_version nwindows

Für den SPARC-Emulator ist das OpenBIOS (http://www.openbios.org) implementiert. Ziel von OpenBIOS ist eine vollständige Kompatibilität zum Standard EEE 1275-1994 bei der Firmware. Ab QEMU 0.15 ist es möglich neben Linux auch Solaris 8 für Sparc32 und HelenOS für Sparc64 zu booten. Der SPARC32-System-Emulator hat diese zusätzlichen Optionen:

-g WxHx[xDEPTH]

Definiert den initialen Grafik-Modus (Default = 1024x768x8). Es kann auch der Modus 1024x768x24 eingestellt werden.

-prom-env string

Mit dieser Option setzt man OpenBIOS-Variablen im NVRAM. Im folgenden Beispiel wird der automatische Boot-Vorgang unterbunden und der Prompt des OpenBIOS erscheint.

Host ~$ qemu-system-sparc -machine type=SPARCClassic \
-g 1024x768x24 -prom-env 'auto-boot?=false'

Hilfestellung zu den OpenBIOS-Befehlen erhält man mit help.

0 > help

Der Bootvorgang wird mit dem Befehl boot gestartet. Soll von CD-ROM gestartet werden, ist boot cdrom einzugeben. Beispiele virtueller Maschinen mit SPARC-Architektur werden im Abschnitt Gast-Systeme erläutert.

Das Programm qemu-system-sparc64 dient zur Emulation von folgenden 64-Bit-SPARC-Systemen: Sun4u (UltraSPARC PC-ähnlich), Sun4v (T1 PC-ähnlich), oder generische Niagara-Maschine (T1). Folgende Sun4u-Architekturen werden emuliert:

  • UltraSparc IIi APB PCI Bridge
  • PCI VGA kompatible Grafikkarte mit VESA Bochs Extensions
  • PS/2 Maus und Tastatur
  • NVRAM M48T59
  • PC-kompatible serielle Ports
  • zwei PCI-IDE-Interfaces mit Hard-Disk- und CD-ROM-Support
  • Disketten-Laufwerk

Der SPARC64-System-Emulator besitzt die gleichen Optionen wie der SPARC32-System-Emulator. Die möglichen Maschinen-Typen zeigt -machine ? an.

Host ~$ qemu-system-sparc64 -machine ?

Supported machines are:

sun4u      Sun4u platform (default)

sun4v      Sun4v platform

Niagara    Sun4v platform, Niagara

Die möglichen CPU-Typen zeigt -cpu ? an.

Host ~$ qemu-system-sparc64 -cpu ?

Sparc  Fujitsu Sparc64 IU 0004000200000000 FPU 00000000 MMU 00000000 NWINS 4 

Sparc Fujitsu Sparc64 III IU 0004000300000000 FPU 00000000 MMU 00000000 NWINS 5 

Sparc Fujitsu Sparc64 IV IU 0004000400000000 FPU 00000000 MMU 00000000 NWINS 8 

Sparc Fujitsu Sparc64 V IU 0004000551000000 FPU 00000000 MMU 00000000 NWINS 8 

Sparc  TI UltraSparc I IU 0017001040000000 FPU 00000000 MMU 00000000 NWINS 8 

Sparc TI UltraSparc II IU 0017001120000000 FPU 00000000 MMU 00000000 NWINS 8 

Sparc TI UltraSparc IIi IU 0017001291000000 FPU 00000000 MMU 00000000 NWINS 8 

Sparc TI UltraSparc IIe IU 0017001314000000 FPU 00000000 MMU 00000000 NWINS 8 

Sparc Sun UltraSparc III IU 003e001434000000 FPU 00000000 MMU 00000000 NWINS 8 

Sparc Sun UltraSparc III Cu IU 003e001541000000 FPU 00000000 MMU 00000001 NWINS 8 

Sparc Sun UltraSparc IIIi IU 003e001634000000 FPU 00000000 MMU 00000000 NWINS 8 

Sparc Sun UltraSparc IV IU 003e001831000000 FPU 00000000 MMU 00000002 NWINS 8 

Sparc Sun UltraSparc IV+ IU 003e001922000000 FPU 00000000 MMU 00000000 NWINS 8 +cmt 

Sparc Sun UltraSparc IIIi+ IU 003e002200000000 FPU 00000000 MMU 00000001 NWINS 8 

Sparc Sun UltraSparc T1 IU 003e002302000000 FPU 00000000 MMU 00000003 NWINS 8 +hypv +cmt +gl 

Sparc Sun UltraSparc T2 IU 003e002402000000 FPU 00000000 MMU 00000003 NWINS 8 +hypv +cmt +gl 

Sparc NEC UltraSparc I IU 0022001040000000 FPU 00000000 MMU 00000000 NWINS 8 

Default CPU feature flags (use '-' to remove): float swap mul div flush fsqrt fmul vis1 vis2 fsmuld 

Available CPU feature flags (use '+' to add): float128 hypv cmt gl 

Numerical features (use '=' to set): iu_version fpu_version mmu_version nwindows

Beispiele mit qemu-system-sparc findet man unter http://qemu-buch.de/d/Gast-Systeme/_SPARC-Architektur.

ARM

Die ARM-Architektur wurde 1983 vom englischen Computerhersteller Acorn Computers Ltd. als Entwicklungsprojekt gestartet. Anstatt auf Prozessoren der Firmen Intel oder Motorola zurückzugreifen, entwickelte man einen eigenen Prozessor, den ARM (Acorn RISC Machine). Tests ergaben, dass diese Rechner bei praktisch gleicher Taktfrequenz etwa acht mal schneller waren als die Rechner der Konkurrenten Commodore Amiga und Atari ST. Nachdem 1989 der ARM2 zum ARM3 weiterentwickelt worden war und als immer mehr Firmen Interesse an diesen Prozessoren bekundet hatten, gründete Acorn im Jahre 1990 zusammen mit Apple und VLSI Technology die Firma Advanced RISC Machines Ltd. (ARM). Die ARM-Architektur folgt dem RISC-Konzept (Reduced Instruction Set Computing). Ein RISC-Befehlssatz verzichtet zugunsten eines niedrigeren Dekodierungsaufwandes konsequent auf komplexe Befehle, wodurch die Einzelbefehle einfacher auszuführen sind. Zusätzlich sind die Befehle bei RISC-Prozessoren fest verdrahtet. Jede Operation wird also durch Leiterbahnen auf dem Prozessor repräsentiert. Aufgrund ihrer geringen Leistungsaufnahme kommen ARM-Prozessoren in vielen eingebetteten Systemen, wie Mobiltelefonen, PDAs und Routern, zum Einsatz. Im QEMU-Paket ist das Programm qemu-system-arm enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an.

Host ~$ qemu-system-arm -machine ?

Supported machines are:

collie     Collie PDA (SA-1110)

vexpress-a9 ARM Versatile Express for Cortex-A9

syborg     Syborg (Symbian Virtual Platform)

musicpal   Marvell 88w8618 / MusicPal (ARM926EJ-S)

mainstone  Mainstone II (PXA27x)

n800       Nokia N800 tablet aka. RX-34 (OMAP2420)

n810       Nokia N810 tablet aka. RX-44 (OMAP2420)

cheetah    Palm Tungsten|E aka. Cheetah PDA (OMAP310)

sx1        Siemens SX1 (OMAP310) V2

sx1-v1     Siemens SX1 (OMAP310) V1

tosa       Tosa PDA (PXA255)

akita      Akita PDA (PXA270)

spitz      Spitz PDA (PXA270)

borzoi     Borzoi PDA (PXA270)

terrier    Terrier PDA (PXA270)

connex     Gumstix Connex (PXA255)

verdex     Gumstix Verdex (PXA270)

lm3s811evb Stellaris LM3S811EVB

lm3s6965evb Stellaris LM3S6965EVB

realview-eb ARM RealView Emulation Baseboard (ARM926EJ-S)

realview-eb-mpcore ARM RealView Emulation Baseboard (ARM11MPCore)

realview-pb-a8 ARM RealView Platform Baseboard for Cortex-A8

realview-pbx-a9 ARM RealView Platform Baseboard Explore for Cortex-A9

versatilepb ARM Versatile/PB (ARM926EJ-S)

versatileab ARM Versatile/AB (ARM926EJ-S)

integratorcp ARM Integrator/CP (ARM926EJ-S) (default)

Die ARM Integrator/CP-Emulation unterstützt folgende Hardware:

  • ARM926E, ARM1026E, ARM946E, ARM1136 oder Cortex-A8 CPU
  • zwei PL011 UARTs
  • SMC 91c111 Ethernet-Adapter
  • PL110 LCD Controller
  • PL050 KMI mit PS/2 Tastatur und Maus
  • PL181 MultiMedia Card Interface mit SD-Karte.

Die ARM Versatile-Baseboard-Emulation unterstützt folgende Hardware:

  • ARM926E, ARM1136 oder Cortex-A8 CPU
  • L190 Vectored Interrupt Controller
  • vier PL011 UARTs
  • SMC 91c111 Ethernet-Adapter
  • PL110 LCD Controller
  • PL050 KMI mit PS/2 Tastatur und Maus
  • PCI Host Bridge mit Zugriff auf PCI-Memory. Da kein Zugriff auf PCI-IO möglich ist, werden einige Devices (ne2k_pci NIC) nicht unterstützt und andere Devices (rtl8139 NIC) funktionieren nur wenn diese Memory-Mapped-Control-Register anwenden.
  • PCI OHCI USB Controller.
  • LSI53C895A PCI SCSI Host Bus Adapter mit Harddisk und CD-ROM-Laufwerken
  • PL181 MultiMedia Card Interface mit SD-Karte.

Die ARM RealView Baseboard-Emulation unterstützt folgende Hardware:

  • ARM926E, ARM1136, ARM11MPCORE(x4) oder Cortex-A8 CPU
  • ARM AMBA Generic/Distributed Interrupt Controller
  • vier PL011 UARTs
  • SMC 91c111 Ethernet-Adapter
  • PL110 LCD Controller
  • PL050 KMI mit PS/2 Tastatur und Maus
  • PCI Host Bridge
  • PCI OHCI USB Controller
  • LSI53C895A PCI SCSI Host Bus Adapter mit Hard-Disk und CD-ROM-Laufwerken
  • PL181 MultiMedia Card Interface mit SD-Karte.

Die Emulation der XScale-based Clamshell PDA Modelle (Spitz, Akita, Borzoi und Terrier) unterstützt folgende Hardware:

  • Intel PXA270 System-on-chip (ARM V5TE Core)
  • NAND Flash Memory
  • IBM/Hitachi DSCM microdrive in einem PXA PCMCIA slot – nicht in „Akita“
  • On-Chip OHCI USB Controller
  • On-Chip LCD Controller
  • On-Chip Real Time Clock
  • TI ADS7846 Touchscreen Controller auf SSP-Bus
  • Maxim MAX1111 Analog-Digital-Konverter auf I^2C-Bus
  • GPIO-verbundener Tastatur-Controller und LEDs
  • Secure Digital Card verbunden mit dem PXA MMC/SD-Host
  • drei On-Chip-UARTs
  • WM8750 Audio-CODEC auf I^2C-Bus und I^2S-Bus.

Die Emulation Palm Tungsten|E PDA (Codename „Cheetah“) unterstützt folgende Hardware:

  • Texas Instruments OMAP310 System-on-Chip (ARM 925T Core)
  • ROM und RAM-Speicher. Das ROM Firmware-Image kann mit der -option-rom geladen werden.
  • On-Chip LCD-Controller
  • On-Chip Real Time Clock
  • TI TSC2102i Touchscreen Controller / Analog-Digital-Konverter / Audio CODEC verbunden mit MicroWire und I^2S-Bus
  • GPIO-verbundene Matrix-Tastatur
  • Secure Digital Card verbunden mit OMAP MMC/SD-Host
  • drei On-Chip UARTs

Die Emulation der Nokia N800- und N810-Internet-Tablets (RX-34, RX-44/48) unterstützt folgende Hardware:

  • Texas Instruments OMAP2420 System-on-Chip (ARM 1136 Core)
  • RAM und non-volatile OneNAND Flash Memories
  • Display mit EPSON-Remote-Framebuffer-Chip und OMAP On-Chip Display-Controller und einem LS041y3 MIPI DBI-C-Controller

vTI TSC2301 (in N800) und TI TSC2005 (in N810) Touchscreen-Controllers mit SPI-Bus

vNational Semiconductor LM8323-gesteuerte Qwerty-Tastatur mit I^2C-Bus

vSecure Digital Card verbunden mit OMAP MMC/SD-Host

  • drei OMAP On-Chip UARTs und On-Chip STI Debugging-Konsole
  • einen Bluetooth(R)-Transciever und HCI-verbundener UART
  • Mentor Graphics „Inventra“ dual-role USB-Controller embedded in einem TI TUSB6010-Chip - nur USB-Host-Mode wird unterstützt
  • TI TMP105 Temperatur-Sensor am I^2C-Bus
  • TI TWL92230C Power-Management mit einem RTC am I^2C-Bus
  • Nokia RETU und TAHVO multi-purpose Chips mit einem RTC am CBUS

Die Luminary Micro Stellaris LM3S811EVB-Emulation unterstützt folgende Hardware:

  • Cortex-M3 CPU Core
  • 64k Flash und 8k SRAM
  • Timers, UARTs, ADC und I^2C-Interface
  • OSRAM Pictiva 96×16 OLED mit SSD0303-Controller am I^2C-Bus.

Die Luminary Micro Stellaris LM3S6965EVB-Emulation unterstützt folgende Hardware:

  • Cortex-M3 CPU Core
  • 256k Flash und 64k SRAM
  • Timers, UARTs, ADC, I^2C und SSI-Interfaces
  • OSRAM Pictiva 128×64 OLED mit SSD0323-Controller verbunden via SSI.

Die Freecom MusicPal Internet Radio-Emulation unterstützt folgende Hardware:

  • Marvell MV88W8618 ARM Core.
  • 32 MB RAM, 256 KB SRAM, 8 MB Flash.
  • bis zu zwei 16550 UARTs
  • MV88W8xx8 Ethernet-Controller
  • MV88W8618 Audio-Controller, WM8750 CODEC und Mixer
  • 128×64-Anzeige mit Helligkeits-Steuerung
  • 2 Buttons, 2 Navigation-Wheels mit Button-Funktion.

Die Emulation der Siemens SX1-Modelle v1 und v2 (Default) unterstützt folgende Hardware:

  • Texas Instruments OMAP310 System-on-Chip (ARM 925T Core)
  • ROM und RAM Speicher (ROM-Firmware-Image kann mit der Option -pflash geladen werden) V1 1 Flash 16MB und 1 Flash 8MB V2 1 Flash 32MB
  • On-Chip LCDController
  • On-Chip Real Time Clock
  • Secure Digital Card verbunden mit OMAP MMC/SD-Host
  • drei On-Chip UARTs

Die Emulation der Syborg Symbian Virtual Platform unterstützt folgende Hardware:

  • ARM Cortex-A8 CPU
  • Interrupt Controller
  • Timer
  • Real Time Clock
  • Tastatur
  • Framebuffer
  • Touchscreen
  • UARTs

Ab QEMU 0.15 werden ARM Versatile Express („vexpress-a9“) und Sharp Zaurus SL-5500 („collie“) unterstützt. Die cp15-Performance-Counter und cp14-Debug-Register wurden als Dummy implementiert. Dadurch können Linux-Kernel booten, die diese Funktionalitäten abfragen. Die möglichen CPU-Typen der ARM-Emulation zeigt -cpu ? an.

Host ~$ qemu-system-arm -cpu ?

Available CPUs:

  arm926

  arm946

  arm1026

  arm1136

  arm1136-r2

  arm11mpcore

  cortex-m3

  cortex-a8

  cortex-a9

  ti925t

  pxa250

  sa1100

  sa1110

  pxa255

  pxa260

  pxa261

  pxa262

  pxa270

  pxa270-a0

  pxa270-a1

  pxa270-b0

  pxa270-b1

  pxa270-c0

  pxa270-c5

  any

Die ARM-Emulation unterstützt diese zusätzlichen Optionen:

-semihosting

Aktiviert die Semihosting Syscall Emulation. Bei der ARM-Architektur wird das „Angel“-Interface implementiert. Dabei wird dem Gast-System direkter Zugriff auf das Host-Dateisystem erlaubt. Es ist nur bei vertrauenswürdigen Gast-Systemen zu verwenden. Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Zum einen gibt es erhebliche Unterschiede zu einem normalen PC. Zum anderen erschweren Lizenz-Bestimmungen eine Nachbildung der Hard- und Firmware. Das Booten von Linux ist mit den Speziellen Linux-Bootoptionen möglich. Beispiel:

Host ~$ qemu-system-arm -kernel zImage.integrator \
-initrd arm_root.img

-old-param

Für die ARM-Architektur wird ein Modus mit den alten Parametern aktiviert.

Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich. Ein Beispiel findet man im Abschnitt Gast-Systeme. Der im Android SDK enthaltene Android Emulator verwendet ein modifiziertes qemu-system-arm.

MIPS

Die MIPS-Architektur (Microprocessor without interlocked pipeline stages) ist eine RISC-Prozessorarchitektur, die ab 1981 an der Stanford Universität entwickelt wurde. MIPS war ursprünglich eine 32-Bit-Architektur, die 1991 mit dem R4000 auf 64 Bit erweitert wurde. MIPS-Prozessoren wurden von Silicon Graphics in Unix-Rechnern eingesetzt. Früher boten auch andere Hersteller, wie zum Beispiel Digital Equipment Corporation (DEC) und Siemens beziehungsweise SNI, Maschinen mit MIPS-Prozessoren an. MIPS-Prozessoren findet man auch häufig in embedded Systemen (Cisco-Router, Sun Cobalt Server bis RaQ/Qube2, BMW-Navigationssysteme, Fritz!Box, Satelliten-Receiver, Dreambox, Konica Minolta DSLRs und Sony- und Nintendo-Spielkonsolen). Im QEMU-Paket sind die Programme qemu-system-mips, qemu-system-mips64, qemu-system-mipsel und qemu-system-mips64el (MIPSel ist eine MIPS-Architektur mit anderer Byte-Reihenfolge) enthalten. Folgende Maschinen können emuliert werden.

  • generische ISA PC-ähnliche Maschine „mips“
  • MIPS-Malta-Prototyp-Board „Malta“
  • ACER Pica „pica61“ (erfordert 64-Bit-Emulator)
  • MIPS-Emulator-Pseudo-Board „mipssim“
  • MIPS Magnum R4000-Maschine „magnum“ (erfordert 64-Bit-Emulator).

Die möglichen Maschinen-Typen zeigt jeweils die Option -machine ? an.

Host ~$ qemu-system-mips -machine ?

Supported machines are:

mipssim    MIPS MIPSsim platform

malta      MIPS Malta Core LV (default)

magnum     MIPS Magnum

pica61     Acer Pica 61

mips       mips r4k platform

Host ~$ qemu-system-mips64 -machine ?

Supported machines are:

mipssim    MIPS MIPSsim platform

malta      MIPS Malta Core LV (default)

magnum     MIPS Magnum

pica61     Acer Pica 61

mips       mips r4k platform

Host ~$ qemu-system-mipsel -machine ?

Supported machines are:

mipssim    MIPS MIPSsim platform

malta      MIPS Malta Core LV (default)

magnum     MIPS Magnum

pica61     Acer Pica 61

mips       mips r4k platform

Host ~$ qemu-system-mips64el -machine ?

Supported machines are:

fulong2e   Fulong 2e mini pc

mipssim    MIPS MIPSsim platform

malta      MIPS Malta Core LV (default)

magnum     MIPS Magnum

pica61     Acer Pica 61

mips       mips r4k platform

Die generische Emulation (mips) ermöglicht die Installation von Debian auf einer virtuellen Festplatte. Die generische Emulation unterstützt folgende Hardware:

  • mehrere unterschiedliche MIPS CPUs (Default 24Kf)
  • PC-kompatibler Serieller Port
  • PC-kompatible IDE-Festplatte
  • NE2000 Netzwerk-Karte

Die Malta-Emulation unterstützt die folgende Hardware:

  • Core-Board mit MIPS 24Kf CPU und Galileo-System-Controller
  • PIIX4 PCI/USB/SMbus-Controller
  • Multi-I/O Chip's Serial Device
  • PCnet32 PCI Netzwerk-Karte
  • Malta FPGA serielles Device
  • Cirrus (Default) und andere PCI-VGA-Grafik-Karten

Die ACER-Pica-Emulation unterstützt die folgende Hardware:

  • MIPS R4000 CPU
  • PC-kompatible IRQ- und DMA-Controllers
  • PC-Tatstatur
  • IDE-Controller

Die MIPS-Emulator-Pseudo-Board-Emulation (mipssim) unterstützt ähnliche Hardware wie die generische Emulation (mips):

  • Mehrere unterschiedliche MIPS CPUs (Default 24Kf)
  • PC-kompatibler Serieller Port
  • MIPSnet-Netzwerk-Emulation

Die MIPS-Magnum-R4000-Emulation unterstützt die folgende Hardware:

  • MIPS R4000 CPU
  • PC-kompatibler IRQ-Controller
  • PC-Tastatur
  • SCSI-Controller
  • G364-Framebuffer

Die möglichen CPU-Typen zeigt -cpu ? an.

Host ~$ qemu-system-mips -cpu ?

MIPS '4Kc'

MIPS '4Km'

MIPS '4KEcR1'

MIPS '4KEmR1'

MIPS '4KEc'

MIPS '4KEm'

MIPS '24Kc'

MIPS '24Kf'

MIPS '34Kf'

Host ~$ qemu-system-mips64 -cpu ?

MIPS '4Kc'

MIPS '4Km'

MIPS '4KEcR1'

MIPS '4KEmR1'

MIPS '4KEc'

MIPS '4KEm'

MIPS '24Kc'

MIPS '24Kf'

MIPS '34Kf'

MIPS 'R4000'

MIPS 'VR5432'

MIPS '5Kc'

MIPS '5Kf'

MIPS '20Kc'

MIPS 'MIPS64R2-generic'

MIPS 'Loongson-2E'

MIPS 'Loongson-2F'

</'code>

''Host ~$ **qemu-system-mipsel -cpu ?**''

<code>

MIPS '4Kc'

MIPS '4Km'

MIPS '4KEcR1'

MIPS '4KEmR1'

MIPS '4KEc'

MIPS '4KEm'

MIPS '24Kc'

MIPS '24Kf'

MIPS '34Kf'

Host ~$ qemu-system-mips64el -cpu ?

MIPS '4Kc'

MIPS '4Km'

MIPS '4KEcR1'

MIPS '4KEmR1'

MIPS '4KEc'

MIPS '4KEm'

MIPS '24Kc'

MIPS '24Kf'

MIPS '34Kf'

MIPS 'R4000'

MIPS 'VR5432'

MIPS '5Kc'

MIPS '5Kf'

MIPS '20Kc'

MIPS 'MIPS64R2-generic'

MIPS 'Loongson-2E'

MIPS 'Loongson-2F'

</'code>

Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich. Ein Beispiel findet man im Abschnitt Gast-Systeme. 







==== Coldfire ====

Die Coldfire-Prozessorarchitektur ist eine CISC-Architektur basierend auf der Motorola 68000er-Familie. Diese Prozessoren sind speziell auf den Embedded-Markt ausgerichtet. Im QEMU-Paket ist das Programm qemu-system-m68k enthalten. Das Booten eines uClinux-Kernels wird unterstützt. Die möglichen Maschinen-Typen zeigt -machine ? an. 



''Host ~$ **qemu-system-m68k -machine ?**''

<code>

Supported machines are:

dummy      Dummy board

mcf5208evb MCF5206EVB (default)

an5206     Arnewsh 5206

Die möglichen CPUs sind:

Host ~$ qemu-system-m68k -cpu ?

m5206

m5208

cfv4e

any

Die M5208EVB-Emulation unterstützt folgende Hardware:

  • MCF5208 ColdFire V2 Mikroprozessor (ISA A+ mit EMAC).
  • drei Zwei-on-Chip UARTs.
  • Fast Ethernet Controller (FEC)

Die AN5206-Emulation unterstützt folgende Hardware:

  • MCF5206 ColdFire V2 Mikroprozessor.
  • Zwei-on-Chip UARTs.

Es wird diese zusätzliche Option unterstützt.

-semihosting

Aktiviert die Semihosting Syscall Emulation. Für die M68K-Architektur wird das „ColdFire GDB“-Interface implementiert. Dabei wird dem Gast-System direkter Zugriff auf das Host-Dateisystem erlaubt. Es ist nur bei vertrauenswürdigen Gast-Systemen zu verwenden. Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich. Beispiel:

Host ~$ qemu-system-m68k -kernel vmlinux-2.6.21-uc0 -nographic

Ein Beispiel findet man im Abschnitt Gast-Systeme.

PowerPC

Die PowerPC-Architektur (PPC) ist eine 1991 durch ein Konsortium aus Apple, IBM und Motorola (heute Freescale) spezifizierte CPU-Architektur auf RISC-Basis. PowerPC-Prozessoren sind unter anderem im Einsatz in Apple-Macintosh-Rechnern, in IBM pSeries (RS/6000) und in der IBM Blade JS20, in den Motorola PowerStack-Rechnern, im Nintendo GameCube und Wii, in Form des Cell in der Playstation 3 von Sony sowie in der Xbox 360 von Microsoft und in vielen eingebetteten Systemen. Die Betriebssysteme Apple Mac OS X, Apple Mac OS Versionen 7.5 bis 9.0, Darwin beziehungsweise OpenDarwin und Linux (LinuxPPC) sind für diese Architektur verfügbar.

QEMU emuliert die folgende PowerPC-Hardware:

  • UniNorth oder Grackle PCI Bridge
  • PCI VGA kompatible Grafikkarte mit VESA-Bochs-Extensions
  • Zwei PMAC-IDE-Interfaces mit Hard-Disk- und CD-ROM-Support
  • NE2000-PCI-Adapter
  • NVRAM (Non Volatile Random Access Memory)
  • VIA-CUDA mit ADB Tastatur und Maus.

QEMU emuliert die folgende PREP-Hardware:

  • PCI-Bridge
  • PCI VGA kompatible Grafikkarte mit VESA-Bochs-Extensions
  • 2 PMAC-IDE-Interfaces mit Hard-Disk- und CD-ROM-Support
  • Disketten-Laufwerk
  • NE2000-PCI-Adapter
  • Serielles Port
  • PREP NVRAM (Non Volatile Random Access Memory)
  • PC kompatible Tastatur und Maus.

QEMU verwendet das OpenBIOS für die Emulation der G3Beige- und Mac99-PowerMac-Maschinen. Im QEMU-Paket sind die Programme qemu-system-ppc, qemu-system-ppc64 und qemu-system-ppcemb enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an.

Host ~$ qemu-system-ppc -machine ?

Supported machines are:

virtex-ml507 Xilinx Virtex ML507 reference design

mpc8544ds  mpc8544ds

bamboo     bamboo (alias of bamboo-0.13)

bamboo-0.13 bamboo

bamboo-0.12 bamboo

ref405ep   ref405ep

taihu      taihu

mac99      Mac99 based PowerMAC

g3beige    Heathrow based PowerMAC (default)

prep       PowerPC PREP platform

Host ~$ qemu-system-ppc64 -machine ?

Supported machines are:

virtex-ml507 Xilinx Virtex ML507 reference design

mpc8544ds  mpc8544ds

bamboo     bamboo (alias of bamboo-0.13)

bamboo-0.13 bamboo

bamboo-0.12 bamboo

ref405ep   ref405ep

taihu      taihu

mac99      Mac99 based PowerMAC (default)

g3beige    Heathrow based PowerMAC

prep       PowerPC PREP platform

Host ~$ qemu-system-ppcemb -machine ?

Supported machines are:

virtex-ml507 Xilinx Virtex ML507 reference design

mpc8544ds  mpc8544ds

bamboo     bamboo (alias of bamboo-0.13)

bamboo-0.13 bamboo

bamboo-0.12 bamboo

ref405ep   ref405ep

taihu      taihu

mac99      Mac99 based PowerMAC

g3beige    Heathrow based PowerMAC (default)

prep       PowerPC PREP platform

Die möglichen CPU-Typen zeigt -cpu ? an.

Host ~$ qemu-system-ppc -cpu ?

Host ~$ qemu-system-ppcemp -cpu ?

Host ~$ qemu-system-ppc64 -cpu ?

PowerPC 401              PVR 00270000

PowerPC 401A1            PVR 00210000

PowerPC 401B2            PVR 00220000

PowerPC 401C2            PVR 00230000

PowerPC 401D2            PVR 00240000

PowerPC 401E2            PVR 00250000

PowerPC 401F2            PVR 00260000

PowerPC 401G2            PVR 00270000

PowerPC IOP480           PVR 00220000

PowerPC Cobra            PVR 10100000

PowerPC 403              PVR 00200200

PowerPC 403GA            PVR 00200011

PowerPC 403GB            PVR 00200100

PowerPC 403GC            PVR 00200200

PowerPC 403GCX           PVR 00201400

PowerPC 405              PVR 41810000

PowerPC 405D2            PVR 20010000

PowerPC 405D4            PVR 41810000

PowerPC 405CR            PVR 40110145

PowerPC 405CRa           PVR 40110041

PowerPC 405CRb           PVR 401100c5

PowerPC 405CRc           PVR 40110145

PowerPC 405EP            PVR 51210950

PowerPC 405EZ            PVR 41511460

PowerPC 405GP            PVR 401100c4

PowerPC 405GPa           PVR 40110000

PowerPC 405GPb           PVR 40110040

PowerPC 405GPc           PVR 40110082

PowerPC 405GPd           PVR 401100c4

PowerPC 405GPe           PVR 40110145

PowerPC 405GPR           PVR 50910951

PowerPC 405LP            PVR 41f10000

PowerPC Npe405H          PVR 414100c0

PowerPC Npe405H2         PVR 41410140

PowerPC Npe405L          PVR 416100c0

PowerPC Npe4GS3          PVR 40b10000

PowerPC STB03            PVR 40310000

PowerPC STB04            PVR 41810000

PowerPC STB25            PVR 51510950

PowerPC x2vp4            PVR 20010820

PowerPC x2vp7            PVR 20010820

PowerPC x2vp20           PVR 20010860

PowerPC x2vp50           PVR 20010860

PowerPC 440-Xilinx       PVR 7ff21910

PowerPC MPC52xx          PVR 80822011

PowerPC MPC82xx          PVR 80822013

PowerPC PowerQUICC-II    PVR 80822013

PowerPC G2               PVR 00810011

PowerPC G2H4             PVR 80811010

PowerPC G2GP             PVR 80821010

PowerPC G2LS             PVR 90810010

PowerPC G2HiP3           PVR 00810101

PowerPC G2HiP4           PVR 80811014

PowerPC MPC603           PVR 00810100

PowerPC G2le             PVR 80820010

PowerPC G2leGP           PVR 80822010

PowerPC G2leLS           PVR a0822010

PowerPC G2leGP1          PVR 80822011

PowerPC G2leGP3          PVR 80822011

PowerPC MPC8240          PVR 00810100

PowerPC MPC5200          PVR 80822011

PowerPC MPC5200_v10      PVR 80822011

PowerPC MPC5200_v11      PVR 80822011

PowerPC MPC5200_v12      PVR 80822011

PowerPC MPC5200B         PVR 80822011

PowerPC MPC5200B_v20     PVR 80822011

PowerPC MPC5200B_v21     PVR 80822011

PowerPC MPC8241          PVR 80811014

PowerPC MPC8245          PVR 80811014

PowerPC MPC8247          PVR 80822013

PowerPC MPC8248          PVR 80822013

PowerPC MPC8250          PVR 80811014

PowerPC MPC8250_HiP3     PVR 00810101

PowerPC MPC8250_HiP4     PVR 80811014

PowerPC MPC8255          PVR 80811014

PowerPC MPC8255_HiP3     PVR 00810101

PowerPC MPC8255_HiP4     PVR 80811014

PowerPC MPC8260          PVR 80811014

PowerPC MPC8260_HiP3     PVR 00810101

PowerPC MPC8260_HiP4     PVR 80811014

PowerPC MPC8264          PVR 80811014

PowerPC MPC8264_HiP3     PVR 00810101

PowerPC MPC8264_HiP4     PVR 80811014

PowerPC MPC8265          PVR 80811014

PowerPC MPC8265_HiP3     PVR 00810101

PowerPC MPC8265_HiP4     PVR 80811014

PowerPC MPC8266          PVR 80811014

PowerPC MPC8266_HiP3     PVR 00810101

PowerPC MPC8266_HiP4     PVR 80811014

PowerPC MPC8270          PVR 80822013

PowerPC MPC8271          PVR 80822013

PowerPC MPC8272          PVR 80822013

PowerPC MPC8275          PVR 80822013

PowerPC MPC8280          PVR 80822013

PowerPC e200             PVR 81120000

PowerPC e200z5           PVR 81000000

PowerPC e200z6           PVR 81120000

PowerPC e300             PVR 00850010

PowerPC e300c1           PVR 00830010

PowerPC e300c2           PVR 00840010

PowerPC e300c3           PVR 00850010

PowerPC e300c4           PVR 00860010

PowerPC MPC8343          PVR 00830010

PowerPC MPC8343A         PVR 00830010

PowerPC MPC8343E         PVR 00830010

PowerPC MPC8343EA        PVR 00830010

PowerPC MPC8347          PVR 00830010

PowerPC MPC8347T         PVR 00830010

PowerPC MPC8347P         PVR 00830010

PowerPC MPC8347A         PVR 00830010

PowerPC MPC8347AT        PVR 00830010

PowerPC MPC8347AP        PVR 00830010

PowerPC MPC8347E         PVR 00830010

PowerPC MPC8347ET        PVR 00830010

PowerPC MPC8347EP        PVR 00830010

PowerPC MPC8347EA        PVR 00830010

PowerPC MPC8347EAT       PVR 00830010

PowerPC MPC8347EAP       PVR 00830010

PowerPC MPC8349          PVR 00830010

PowerPC MPC8349A         PVR 00830010

PowerPC MPC8349E         PVR 00830010

PowerPC MPC8349EA        PVR 00830010

PowerPC MPC8377          PVR 00860010

PowerPC MPC8377E         PVR 00860010

PowerPC MPC8378          PVR 00860010

PowerPC MPC8378E         PVR 00860010

PowerPC MPC8379          PVR 00860010

PowerPC MPC8379E         PVR 00860010

PowerPC e500             PVR 80210022

PowerPC e500v1           PVR 80200020

PowerPC e500_v10         PVR 80200010

PowerPC e500_v20         PVR 80200020

PowerPC e500v2           PVR 80210022

PowerPC e500v2_v10       PVR 80210010

PowerPC e500v2_v20       PVR 80210020

PowerPC e500v2_v21       PVR 80210021

PowerPC e500v2_v22       PVR 80210022

PowerPC e500v2_v30       PVR 80210030

PowerPC MPC8533          PVR 80210022

PowerPC MPC8533_v10      PVR 80210021

PowerPC MPC8533_v11      PVR 80210022

PowerPC MPC8533E         PVR 80210022

PowerPC MPC8533E_v10     PVR 80210021

PowerPC MPC8533E_v11     PVR 80210022

PowerPC MPC8540          PVR 80200020

PowerPC MPC8540_v10      PVR 80200010

PowerPC MPC8540_v20      PVR 80200020

PowerPC MPC8540_v21      PVR 80200020

PowerPC MPC8541          PVR 80200020

PowerPC MPC8541_v10      PVR 80200020

PowerPC MPC8541_v11      PVR 80200020

PowerPC MPC8541E         PVR 80200020

PowerPC MPC8541E_v10     PVR 80200020

PowerPC MPC8541E_v11     PVR 80200020

PowerPC MPC8543          PVR 80210021

PowerPC MPC8543_v10      PVR 80210010

PowerPC MPC8543_v11      PVR 80210011

PowerPC MPC8543_v20      PVR 80210020

PowerPC MPC8543_v21      PVR 80210021

PowerPC MPC8543E         PVR 80210021

PowerPC MPC8543E_v10     PVR 80210010

PowerPC MPC8543E_v11     PVR 80210011

PowerPC MPC8543E_v20     PVR 80210020

PowerPC MPC8543E_v21     PVR 80210021

PowerPC MPC8544          PVR 80210022

PowerPC MPC8544_v10      PVR 80210021

PowerPC MPC8544_v11      PVR 80210022

PowerPC MPC8544E         PVR 80210022

PowerPC MPC8544E_v10     PVR 80210021

PowerPC MPC8544E_v11     PVR 80210022

PowerPC MPC8545          PVR 80210021

PowerPC MPC8545_v20      PVR 80210020

PowerPC MPC8545_v21      PVR 80210021

PowerPC MPC8545E         PVR 80210021

PowerPC MPC8545E_v20     PVR 80210020

PowerPC MPC8545E_v21     PVR 80210021

PowerPC MPC8547E         PVR 80210021

PowerPC MPC8547E_v20     PVR 80210020

PowerPC MPC8547E_v21     PVR 80210021

PowerPC MPC8548          PVR 80210021

PowerPC MPC8548_v10      PVR 80210010

PowerPC MPC8548_v11      PVR 80210011

PowerPC MPC8548_v20      PVR 80210020

PowerPC MPC8548_v21      PVR 80210021

PowerPC MPC8548E         PVR 80210021

PowerPC MPC8548E_v10     PVR 80210010

PowerPC MPC8548E_v11     PVR 80210011

PowerPC MPC8548E_v20     PVR 80210020

PowerPC MPC8548E_v21     PVR 80210021

PowerPC MPC8555          PVR 80210011

PowerPC MPC8555_v10      PVR 80210010

PowerPC MPC8555_v11      PVR 80210011

PowerPC MPC8555E         PVR 80210011

PowerPC MPC8555E_v10     PVR 80210010

PowerPC MPC8555E_v11     PVR 80210011

PowerPC MPC8560          PVR 80210021

PowerPC MPC8560_v10      PVR 80210010

PowerPC MPC8560_v20      PVR 80210020

PowerPC MPC8560_v21      PVR 80210021

PowerPC MPC8567          PVR 80210022

PowerPC MPC8567E         PVR 80210022

PowerPC MPC8568          PVR 80210022

PowerPC MPC8568E         PVR 80210022

PowerPC MPC8572          PVR 80210030

PowerPC MPC8572E         PVR 80210030

PowerPC e600             PVR 80040010

PowerPC MPC8641          PVR 80040010

PowerPC MPC8641D         PVR 80040010

PowerPC 601              PVR 00010002

PowerPC 601_v0           PVR 00010001

PowerPC 601_v1           PVR 00010001

PowerPC 601v             PVR 00010002

PowerPC 601_v2           PVR 00010002

PowerPC 602              PVR 00050100

PowerPC 603              PVR 00030100

PowerPC Vanilla          PVR 00030100

PowerPC 603e             PVR 00060401

PowerPC Stretch          PVR 00060401

PowerPC 603e_v1.1        PVR 00060101

PowerPC 603e_v1.2        PVR 00060102

PowerPC 603e_v1.3        PVR 00060103

PowerPC 603e_v1.4        PVR 00060104

PowerPC 603e_v2.2        PVR 00060202

PowerPC 603e_v3          PVR 00060300

PowerPC 603e_v4          PVR 00060400

PowerPC 603e_v4.1        PVR 00060401

PowerPC 603e7            PVR 00070200

PowerPC 603e7t           PVR 00071201

PowerPC 603e7v           PVR 00070100

PowerPC Vaillant         PVR 00070100

PowerPC 603e7v1          PVR 00070101

PowerPC 603e7v2          PVR 00070201

PowerPC 603p             PVR 00070000

PowerPC 603r             PVR 00071201

PowerPC Goldeneye        PVR 00071201

PowerPC 604              PVR 00040103

PowerPC 604e             PVR 00090204

PowerPC Sirocco          PVR 00090204

PowerPC 604e_v1.0        PVR 00090100

PowerPC 604e_v2.2        PVR 00090202

PowerPC 604e_v2.4        PVR 00090204

PowerPC 604r             PVR 000a0101

PowerPC Mach5            PVR 000a0101

PowerPC 740              PVR 00080301

PowerPC Arthur           PVR 00080301

PowerPC 750              PVR 00080301

PowerPC Typhoon          PVR 00080301

PowerPC G3               PVR 00080301

PowerPC 740_v1.0         PVR 00080100

PowerPC 750_v1.0         PVR 00080100

PowerPC 740_v2.0         PVR 00080200

PowerPC 750_v2.0         PVR 00080200

PowerPC 740_v2.1         PVR 00080201

PowerPC 750_v2.1         PVR 00080201

PowerPC 740_v2.2         PVR 00080202

PowerPC 750_v2.2         PVR 00080202

PowerPC 740_v3.0         PVR 00080300

PowerPC 750_v3.0         PVR 00080300

PowerPC 740_v3.1         PVR 00080301

PowerPC 750_v3.1         PVR 00080301

PowerPC 740e             PVR 00080100

PowerPC 750e             PVR 00080200

PowerPC 740p             PVR 10080000

PowerPC 750p             PVR 10080000

PowerPC Conan/Doyle      PVR 10080000

PowerPC 750cl            PVR 00087210

PowerPC 750cl_v1.0       PVR 00087200

PowerPC 750cl_v2.0       PVR 00087210

PowerPC 750cx            PVR 00082202

PowerPC 750cx_v1.0       PVR 00082100

PowerPC 750cx_v2.0       PVR 00082200

PowerPC 750cx_v2.1       PVR 00082201

PowerPC 750cx_v2.2       PVR 00082202

PowerPC 750cxe           PVR 00083311

PowerPC 750cxe_v2.1      PVR 00082211

PowerPC 750cxe_v2.2      PVR 00082212

PowerPC 750cxe_v2.3      PVR 00082213

PowerPC 750cxe_v2.4      PVR 00082214

PowerPC 750cxe_v2.4b     PVR 00083214

PowerPC 750cxe_v3.0      PVR 00082310

PowerPC 750cxe_v3.1      PVR 00082311

PowerPC 750cxe_v3.1b     PVR 00083311

PowerPC 750cxr           PVR 00083410

PowerPC 750fl            PVR 70000203

PowerPC 750fx            PVR 70000203

PowerPC 750fx_v1.0       PVR 70000100

PowerPC 750fx_v2.0       PVR 70000200

PowerPC 750fx_v2.1       PVR 70000201

PowerPC 750fx_v2.2       PVR 70000202

PowerPC 750fx_v2.3       PVR 70000203

PowerPC 750gl            PVR 70020102

PowerPC 750gx            PVR 70020102

PowerPC 750gx_v1.0       PVR 70020100

PowerPC 750gx_v1.1       PVR 70020101

PowerPC 750gx_v1.2       PVR 70020102

PowerPC 750l             PVR 00088302

PowerPC LoneStar         PVR 00088302

PowerPC 750l_v2.0        PVR 00088200

PowerPC 750l_v2.1        PVR 00088201

PowerPC 750l_v2.2        PVR 00088202

PowerPC 750l_v3.0        PVR 00088300

PowerPC 750l_v3.2        PVR 00088302

PowerPC 745              PVR 00083208

PowerPC 755              PVR 00083208

PowerPC Goldfinger       PVR 00083208

PowerPC 745_v1.0         PVR 00083100

PowerPC 755_v1.0         PVR 00083100

PowerPC 745_v1.1         PVR 00083101

PowerPC 755_v1.1         PVR 00083101

PowerPC 745_v2.0         PVR 00083200

PowerPC 755_v2.0         PVR 00083200

PowerPC 745_v2.1         PVR 00083201

PowerPC 755_v2.1         PVR 00083201

PowerPC 745_v2.2         PVR 00083202

PowerPC 755_v2.2         PVR 00083202

PowerPC 745_v2.3         PVR 00083203

PowerPC 755_v2.3         PVR 00083203

PowerPC 745_v2.4         PVR 00083204

PowerPC 755_v2.4         PVR 00083204

PowerPC 745_v2.5         PVR 00083205

PowerPC 755_v2.5         PVR 00083205

PowerPC 745_v2.6         PVR 00083206

PowerPC 755_v2.6         PVR 00083206

PowerPC 745_v2.7         PVR 00083207

PowerPC 755_v2.7         PVR 00083207

PowerPC 745_v2.8         PVR 00083208

PowerPC 755_v2.8         PVR 00083208

PowerPC 7400             PVR 000c0209

PowerPC Max              PVR 000c0209

PowerPC G4               PVR 000c0209

PowerPC 7400_v1.0        PVR 000c0100

PowerPC 7400_v1.1        PVR 000c0101

PowerPC 7400_v2.0        PVR 000c0200

PowerPC 7400_v2.1        PVR 000c0201

PowerPC 7400_v2.2        PVR 000c0202

PowerPC 7400_v2.6        PVR 000c0206

PowerPC 7400_v2.7        PVR 000c0207

PowerPC 7400_v2.8        PVR 000c0208

PowerPC 7400_v2.9        PVR 000c0209

PowerPC 7410             PVR 800c1104

PowerPC Nitro            PVR 800c1104

PowerPC 7410_v1.0        PVR 800c1100

PowerPC 7410_v1.1        PVR 800c1101

PowerPC 7410_v1.2        PVR 800c1102

PowerPC 7410_v1.3        PVR 800c1103

PowerPC 7410_v1.4        PVR 800c1104

PowerPC 7448             PVR 80040201

PowerPC 7448_v1.0        PVR 80040100

PowerPC 7448_v1.1        PVR 80040101

PowerPC 7448_v2.0        PVR 80040200

PowerPC 7448_v2.1        PVR 80040201

PowerPC 7450             PVR 80000201

PowerPC Vger             PVR 80000201

PowerPC 7450_v1.0        PVR 80000100

PowerPC 7450_v1.1        PVR 80000101

PowerPC 7450_v1.2        PVR 80000102

PowerPC 7450_v2.0        PVR 80000200

PowerPC 7450_v2.1        PVR 80000201

PowerPC 7441             PVR 80000203

PowerPC 7451             PVR 80000203

PowerPC 7441_v2.1        PVR 80000201

PowerPC 7441_v2.3        PVR 80000203

PowerPC 7451_v2.3        PVR 80000203

PowerPC 7441_v2.10       PVR 80000210

PowerPC 7451_v2.10       PVR 80000210

PowerPC 7445             PVR 80010302

PowerPC 7455             PVR 80010302

PowerPC Apollo6          PVR 80010302

PowerPC 7445_v1.0        PVR 80010100

PowerPC 7455_v1.0        PVR 80010100

PowerPC 7445_v2.1        PVR 80010201

PowerPC 7455_v2.1        PVR 80010201

PowerPC 7445_v3.2        PVR 80010302

PowerPC 7455_v3.2        PVR 80010302

PowerPC 7445_v3.3        PVR 80010303

PowerPC 7455_v3.3        PVR 80010303

PowerPC 7445_v3.4        PVR 80010304

PowerPC 7455_v3.4        PVR 80010304

PowerPC 7447             PVR 80020102

PowerPC 7457             PVR 80020102

PowerPC Apollo7          PVR 80020102

PowerPC 7447_v1.0        PVR 80020100

PowerPC 7457_v1.0        PVR 80020100

PowerPC 7447_v1.1        PVR 80020101

PowerPC 7457_v1.1        PVR 80020101

PowerPC 7457_v1.2        PVR 80020102

PowerPC 7447A            PVR 80030102

PowerPC 7457A            PVR 80030102

PowerPC 7447A_v1.0       PVR 80030100

PowerPC 7457A_v1.0       PVR 80030100

PowerPC Apollo7PM        PVR 80030100

PowerPC 7447A_v1.1       PVR 80030101

PowerPC 7457A_v1.1       PVR 80030101

PowerPC 7447A_v1.2       PVR 80030102

PowerPC 7457A_v1.2       PVR 80030102

PowerPC 620              PVR 00140000

PowerPC Trident          PVR 00140000

PowerPC POWER7           PVR 003f0200

PowerPC POWER7_v2.0      PVR 003f0200

PowerPC 970              PVR 00390202

PowerPC 970fx            PVR 003c0301

PowerPC 970fx_v1.0       PVR 00391100

PowerPC 970fx_v2.0       PVR 003c0200

PowerPC 970fx_v2.1       PVR 003c0201

PowerPC 970fx_v3.0       PVR 003c0300

PowerPC 970fx_v3.1       PVR 003c0301

PowerPC 970gx            PVR 00450000

PowerPC 970mp            PVR 00440101

PowerPC 970mp_v1.0       PVR 00440100

PowerPC 970mp_v1.1       PVR 00440101

PowerPC ppc64            PVR 003c0301

PowerPC ppc32            PVR 00040103

PowerPC ppc              PVR 00040103

PowerPC default          PVR 00040103

Das folgende Beispiel startet eine virtuelle Maschine mit Power PC-Architektur:

Host ~$ qemu-system-ppc Platte.img -g 800×600

qemu-system-ppc besitzt folgende zusätzliche Optionen:

-g WxH[xDEPTH]

Die Startoption -g gibt die Auflösung und Farbtiefe an. Der Default-Wert ist 800x600x15.

-prom-env string

Die Option -prom-env setzt OpenBIOS-Variablen im NVRAM. Beispiel:

Host ~$ qemu-system-ppc -prom-env 'auto-boot?=false' \
-prom-env 'boot-device=hd:2,\yaboot' \
-prom-env 'boot-args=conf=hd:2,\yaboot.conf

Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich. Ein Beispiel findet man im Abschnitt Gast-Systeme.

SuperH

Die SuperH-Prozessorarchitektur (SH) wird von der Firma Renesas Technology entwickelt. Diese RISC-artige Prozessorarchitektur ist in Japan sehr verbreitet. Weltweit wird SuperH in vielen eingebetteten Systemen eingesetzt, da diese Architektur nur wenig Strom verbraucht und relativ kostengünstig ist. Die Jornada-Reihe von HP verwendet auch SH-Prozessoren. Im QEMU-Paket sind die Programme qemu-system-sh4 und qemu-system-sh4eb zur Emulation der 4. Generation (SH-4) enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an.

Host ~$ qemu-system-sh4 -machine ?

Supported machines are:

r2d        r2d-plus board

shix       shix card (default)

Host ~$ qemu-system-sh4eb -machine ?

Supported machines are:

r2d        r2d-plus board

shix       shix card (default)

Die möglichen CPU-Typen zeigt -cpu ? an.

Host ~$ qemu-system-sh4 -cpu ?

SH7750R

SH7751R

SH7785

Host ~$ qemu-system-sh4eb -cpu ?

SH7750R

SH7751R

SH7785

</codE>

Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich. Beispiel: 



''Host ~$ **qemu-system-sh4 -M r2d -hda sh-linux.img -kernel zImage \\\

        -serial null -serial stdio -nographic**''

Ein Beispiel findet man im Abschnitt Gast-Systeme. 



==== ETRAX CRIS ====

ETRAX CRIS bezeichnet eine Prozessorfamilie der Firma Axis Communications. Diese Prozessoren basieren auf dem Code Reduced Instruction Set (CRIS). Im QEMU-Paket ist das Programm qemu-system-cris enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an. 



''Host ~$ **qemu-system-cris -machine ?**''

<code>

Supported machines are:

axis-dev88 AXIS devboard 88

axis-dev88 AXIS devboard 88

bareetraxfs Bare ETRAX FS board (default)

Die möglichen CPU-Typen zeigt -cpu ? an.

Host ~$ qemu-system-cris -cpu ?

Available CPUs:

  crisv8

  crisv9

  crisv10

  crisv11

  crisv32

MicroBlaze

Der Mikrocontroller MicroBlaze wird als Soft-Core in Hardware-Beschreibungssprachen, wie VHDL (Very High Speed Integrated Circuit Hardware Description Language) oder Verilog HDL, definiert. Dieser 32-Bit RISC Mikrocontroller wird durch FPGAs (Field Programmable Gate Array) der Firma Xilinx realisiert. Neben der kostenpflichtigen Variante des Microblaze gibt es quelloffene Nachbauten, die auch auf FPGAs anderer Hersteller eingesetzt werden dürfen. Beispielsweise steht der aeMB-MicroBlaze-Clone unter der LGPL-Lizenz. MicroBlaze wird von den Betriebssystemen µClinux, Linux und FreeRTOS unterstützt. Im QEMU-Paket ist das Programm qemu-system-microblaze enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an.

Host ~$ qemu-system-microblaze -M ?

Supported machines are:

petalogix-ml605 PetaLogix linux refdesign for xilinx ml605 little endian

petalogix-s3adsp1800 PetaLogix linux refdesign for xilinx Spartan 3ADSP1800 (default)

<code>

''Host ~$ **qemu-system-microblazeel -M ?**''

<code>

Supported machines are:

petalogix-ml605 PetaLogix linux refdesign for xilinx ml605 little endian

petalogix-s3adsp1800 PetaLogix linux refdesign for xilinx Spartan 3ADSP1800 (default)

Die möglichen CPU-Typen zeigt -cpu ? an.

Host ~$ qemu-system-microblaze -cpu ?

Host ~$ qemu-system-microblazeel -cpu ?

Lattice Mico32

Lattice Mico32 ist ein auf einer Harvard-Architektur basierender 32-Bit-Soft-Core-Prozessor der Firma Lattice Semiconductor Corporation. Ein Soft-Core-Prozessor besteht aus reiner Anwenderlogik in einem Field Programmable Gate Array (FPGA). Im QEMU-Paket ist das Programm qemu-system-lm32 enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an.

Host ~$ qemu-system-lm32 -machine ?

Supported machines are:

lm32-uclinux lm32 platform for uClinux and u-boot by Theobroma Systems

lm32-evr   LatticeMico32 EVR32 eval system (default)

milkymist  Milkymist One

Die möglichen CPU-Typen zeigt -cpu ? an.

Host ~$ qemu-system-lm32 -cpu ?

Available CPUs:

  lm32-basic

  lm32-standard

  lm32-full

Eingesetzt wird dieser Architektur Prozessor im SoC Milkymist. Dieses wird von QEMU vollständig, inklusive Video-Rendering, unterstützt. Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich.

IBM System z (s390x)

System/390 ist eine Großrechner-Familie (Mainframe) der Firma IBM. Im QEMU-Paket ist das Programm qemu-system-s390x enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an.

Host ~$ qemu-system-s390x -machine ?

Supported machines are:

s390        VirtIO based S390 machine (alias of s390-virtio)

s390-virtio VirtIO based S390 machine (default)

Host ~$ qemu-system-s390x -cpu ?

Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich.

Multiprozessorsysteme

SMP

Ein symmetrisches Multiprozessorsystem (SMP) verfügt über eine Multiprozessor-Architektur, bei der die laufenden Prozesse auf alle verfügbaren Prozessoren verteilt werden können. Beim asymmetrischen Multiprozessing werden dagegen jeder CPU Aufgaben fest zugewiesen. QEMU und KVM können SMP mit bis zu 255 CPUs emulieren. Konfiguriert wird dies mit der Option -smp gefolgt von einer Zahl (1 bis 255).

Host ~$ qemu -hda Platte.img -smp 2

Im QEMU-Monitor informiert der Befehl info cpus über die CPUs.

(qemu) info cpus
* CPU #0: pc=0xc0127365 (halted)
CPU #1: pc=0xc0127365 (halted)

Die mit dem Stern gekennzeichnete CPU ist die Default-CPU. Mit dem folgenden Befehl wird CPU #1 zur Default-CPU.

(qemu) cpu 1

(qemu) info cpus
CPU #0: pc=0xc0127365 (halted)
* CPU #1: pc=0xc0127365 (halted)

Mit dem Befehl cpu_set lässt sich eine CPU offline schalten.

(qemu) cpu_set 0 offline

Mit dem folgenden Befehl wird die CPU #0 online geschaltet.

(qemu) cpu_set 0 online

Für x86-Architekturen lassen sich die Anzahl der Cores pro Socket, der Threads pro Core und die Anzahl der Sockets vorgeben. Die Gesamtzahl der CPUs kann dann weggelassen werden.

Host ~$ qemu -hda Platte.img -smp cores=2,threads=1,sockets=2

(qemu) info cpus

* CPU #0: pc=0x00008bdb (halted)

  CPU #1: pc=0x000ff0a2 (halted)

  CPU #2: pc=0x000ff0a2 (halted)

  CPU #3: pc=0x000ff0a2 (halted)

Weiterhin kann die maximale Anzahl von Hot-Plug-CPUs definiert werden.

Host ~$ qemu -hda Platte.img \
-smp cores=2,threads=1,sockets=2,maxcpus=8

NUMA

NUMA (Non-Uniform Memory Architecture) ist eine Speicher-Architektur für Multiprozessorsysteme. Jeder Prozessor besitzt einen separaten, lokalen Speicher. Anderen Prozessoren des Systems wird über einen gemeinsamen Adressraum ein direkter Zugriff auf diesen Speicher ermöglicht (Distributed Shared Memory). NUMA-Architekturen sind beispielsweise in AMD-Mehrprozessorsystemen auf Opteron-Basis implementiert. Vereinfacht gesagt ist ein NUMA-Node ein Speicherbereich, in welchem jedes Byte den gleichen Abstand (Hops) zu jeder CPU hat. Zur Konfiguration eines NUMA-Nodes dient die Option -numa node. Im folgenden Beispiel wird ein Multi-Node-NUMA-System simuliert.

Host ~$ qemu-system-x86_64 Platte \
-numa node,cpus=0 -numa node,cpus=1 -smp 2

Im QEMU-Monitor informiert der Befehl info numa über den NUMA-Node.

(qemu) info numa

2 nodes

node 0 cpus: 0

node 0 size: 64 MB

node 1 cpus: 1

node 1 size: 64 MB

Die vollständinge Syntax lautet:

-numa node[,mem=size][,cpus=cpu[-cpu]][,nodeid=node]

Die Option mem=size definiert die Größe des Speichers. Der Default-Wert ist 128 MByte. Wird diese Option nicht angegeben, werden die Ressourcen gleichmäßig aufgeteilt. Die Option cpus=cpu[-cpu] adressiert die CPU(s) für die Konfiguration. Wird diese Option nicht angegeben, werden die Ressourcen gleichmäßig aufgeteilt. Die Option nodeid=node definiert die Node-ID.

x86-Virtualisierungen/-Emulationen

Konfiguriert werden die Beschleuniger mit dem Parameter accel der Option -machine. In Abhängikeit von der Architektur stehen kvm, xen, oder tcg. Werden mehrere Beschleuniger vorgegeben, werden diese nacheinander auf Verwendbarkeit geprüft. Per Default wird tcg verwendet.

Tiny Code Generator (TCG)

Nach der QEMU Version 0.9.1 wird als neue Methode der Tiny Code Generator (TCG) zur Code-Generierung für die Emulation verwendet. Der Tiny Code Generator ist performanter als andere Emulatoren, ist aber kein Beschleuniger und Virtualisierer. TCG benötigt also weder Kernel-Module noch Hyperviser. Der Tiny Code Generator ist unabhängiger von der Compiler-Version. Die Grundidee ist, jede Zielanweisung in mehrere RISC-ähnliche Operationen aufzuteilen. Dabei werden einige Optimierungen, zum Beispiel EFLAGS, durchgeführt. Die TCG-Operationen werden als TCG target implementiert. Aktiviert wird der Tiny Code Generator mit dem Parameter accel=tcg der Option -machine.

Host ~$ qemu Platte.img -machine type=pc,accel=tcg

Da tcg die Default-Einstellung ist, kann diese Angabe entfallen.

Host ~$ qemu Platte.img

Die KVM hardware-unterstützte Virtualisierung

Wie bereits beschrieben, ist die Kernel-based Virtual Machine ein Typ-2-Hypervisor, der die Full Virtualization unterstützt. Statt dem Befehl qemu wird bei der Kernel-based Virtual Machine oft der Befehl kvm angewendet. Dies ist verwirrend, da das Native Linux KVM Tool ebenso aufgerufen wird. Bei einigen Distributionen erfolgt der Aufruf mit qemu-system-x86_32, qemu-system-x86_64 oder qemu-kvm. Aktiviert wird die KVM hardware-unterstützte Virtualisierung mit dem Parameter accel=kvm der Option -machine.

Host ~$ qemu Platte.img -machine type=pc,accel=kvm

Bis QEMU 0.15 ist die alte Syntax -enable-kvm möglich.

Host ~$ qemu Platte.img -enable-kvm

Wenn die Verwendung der KVM hardware-unterstützten Virtualisierung unterbunden werden soll, ist der Parameter accel=kvm wegzulassen oder der Defaul-Wert accel=tcg zu verwenden.

Host ~$ qemu Platte.img -machine type=pc,accel=tcg

Bei älteren QEMU-Versionen wird KVM mit -no-kvm deaktiviert.

Host ~$ qemu Platte.img -no-kvm

Bei der Installation von Microsoft Windows als Gast-System sollte die KVM hardware-unterstützte Virtualisierung deaktiviert werden. Nach der Installation kann die KVM hardware-unterstützte Virtualisierung bei allen Windows-Versionen aktiviert sein. Im QEMU-Monitor zeigt der Befehl info kvm an, ob die KVM hardware-unterstützte Virtualisierung aktiv ist. In diesem Fall wurde sie deaktiviert.

(qemu) info kvm
kvm support: disabled

Sind im Host-System die KVM-Kernel-Module geladen, gibt der Befehl info kvm die Meldung kvm support: enabled aus.

Host ~$ qemu -monitor stdio

(qemu) info kvm
kvm support: enabled

Wird eine Virtualisierungslösung innerhalb einer anderen Virtualisierungslösung betrieben, so nennt man dies Nesting. Die Option -enable-nesting (bis QEMU 0.14) ermöglicht das Betreiben von KVM in einer KVM-Instanz. Dazu muss entweder das Host-System über AMD-Prozessoren verfügen oder es muss ein Linux-Kernel ab Version 3.1 installiert sein. Notwendig ist die Emulation einer entsprechenden 64-Bit-CPU. Beispiel:

Host ~$ qemu-system-x86_64 Platte.img \
-cpu qemu64,+svm -enable-nesting

Mit der Option -kvm-shadow-memory wird dem KVM MMU-Shadowing die vorgegebene Speichergröße zugewiesen. Mit der Option -no-kvm-irqchip deaktiviert man den KVM-Kernel-Mode PIC/IOAPIC/LAPIC. Die Option -no-kvm-pit deaktiviert den KVM-Kernel-Mode PIT. Die Option -no-kvm-pit-reinjection deaktiviert den KVM-Kernel-Mode PIT-Interrupt-Reinjection.

Der Hypervisor Xen (HVM)

Wird von den x86-Prozessoren die Hardware-Virtualisierungstechnik unterstützt, kann der Xen Virtual Machine Monitor im HVM-Modus (Hardware Virtual Machine) laufen. Das Xen-Projekt nutzt für den HVM-Modus Source-Code vom QEMU-Projekt zur Emulation gängiger PC-Komponenten (Device Model). Ab QEMU 0.15 wurde die Xen-Unterstützung integriert. Aktiviert wird die Xen-Unterstützung mit dem Parameter accel=xen der Option -machine.

Host ~$ qemu Platte.img -machine type=pc,accel=xen

Der Accelator KQEMU

Ab QEMU 0.12 wird KQEMU nicht mehr unterstützt. Eine Anleitung zur Installation von QEMU mit KQEMU-Support findet man unter der URL http://qemu-buch.de/d/QEMU+KQEMU_unter_Linux. Die folgenden Beispiele gelten bis zur QEMU-Version 0.11. Wenn Host- und Gast-System in x86-Prozessorarchitektur vorliegen, kann QEMU mit dem optionalen Beschleuniger KQEMU auch die Native Virtualization anwenden. Dabei reicht KQEMU die meisten Befehle direkt an die reelle CPU weiter. Nur die CPU-Befehle, die direkt die Hardware ansprechen, werden abgefangen und durch angepasste Routinen ersetzt. Bei Linux-Gast-Systemen wird die beste Beschleunigung mit dem 2.4er Kernel erreicht. Die 2.6er Versionen funktionieren, sind aber langsamer. Zur Aktivierung der vollen KQEMU-Virtualisierung ist die Option -kernel-kqemu anzuwenden.

Host ~$ qemu Platte.img -kernel-kqemu

Im QEMU-Monitor zeigt der Befehl info kqemu die Verwendung von KQEMU an.

(qemu) info kqemu
kqemu support: enabled for user and kernel code

Eine weitere Option ist -enable-kqemu. Dabei wird KQEMU nur im User-Code aktiviert.

Host ~$ qemu Platte.img -enable-kqemu

Im QEMU-Monitor zeigt der Befehl info kqemu die Verwendung von KQEMU an.

(qemu) info kqemu
kqemu support: enabled for user code

Wenn die Verwendung von KQEMU unterbunden werden soll, ist die Option -no-kqemu anzugeben. Bei der Installation von Microsoft Windows als Gast-System sollte KQEMU deaktiviert werden. Nach der Installation kann KQEMU bei allen Windows-Versionen aktiviert sein.

Host ~$ qemu Platte.img -no-kqemu

Im QEMU-Monitor zeigt der Befehl info kqemu, ob der Beschleuniger KQEMU aktiv ist.

(qemu) info kqemu
kqemu support: disabled

In diesem Fall wurde KQEMU deaktiviert. Im nachfolgenden Beispiel wurde QEMU ohne KQEMU-Support kompiliert. Die Optionen -kernel-kqemu und -no-kqemu stehen nicht zur Verfügung.

(qemu) info kqemu
kqemu support: not compiled

Erkennen der Virtualisierung im Gast-System

Mitunter ist es nötig, die verwendete Virtualisierungslösung im Gast-System festzustellen. Unter Linux dienen dazu die Skripte imvirt (http://sourceforge.net/projects/imvirt/) und virt-what (http://people.redhat.com/~rjones/virt-what/). In diesem Beispiel werden diese Pakete unter Ubuntu als Gast-System installiert.

Gast $ sudo apt-get install imvirt virt-what

Läuft das Gast-System unter QEMU mit KVM-Unterstützung, gibt imvirt den die Zeile KVM aus.

Gast $ imvirt
KVM

Wird QEMU ohne KVM-Unterstützung verwendet, wird die Zeile Unknown ausgegeben. Bei einem realen System ist die Ausgabe Physical. Das Skript virt-what gibt bei QEMU mit KVM-Unterstützung kvm aus.

Gast $ sudo virt-what
kvm

Wird QEMU ohne KVM-Unterstützung verwendet, wird die Zeile qemu ausgegeben.

prozessor-architekturen.txt · Zuletzt geändert: von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki