qemu-kvm & libvirtHauptseite | Über | Hilfe | FAQ | Spezialseiten | Anmelden

Druckversion | Impressum | Datenschutz

Prozessor-Architekturen SMP QEMU PPC pentium3 x86 x86_64 SPARC MIPS ARM PowerPC SuperH Coldfire

(Link zu dieser Seite als [[QEMU-KVM-Buch/ Virtuelle Hardware/ Prozessoren]])

<<<|###| >>> | English


Die Emulation mehrerer CPUs unter QEMU.
Die Emulation mehrerer CPUs unter QEMU.
OpenBIOS in der SPARC-Emulation.
OpenBIOS in der SPARC-Emulation.

Inhaltsverzeichnis

[bearbeiten] Prozessor-Architekturen

Als Hardware-Emulator kann QEMU unterschiedliche Architekturen emulieren.

Wird QEMU mit dem Beschleuniger KQEMU verwendet (Native Virtualization), steht nur die x86-Architektur zur Verfügung. Die Kernel-based Virtual Machine basiert auf der Full Virtualization und kann daher auch nur Gast-Systeme mit x86-Architektur betreiben.

[bearbeiten] 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:

Die 32-Bit-Version der x86-Prozessorarchitektur wird von QEMU per Default verwendet.

Host ~$ qemu Platte.img

Die Option -M ermöglicht die Auswahl des emulierten Maschinen-Typs (PC-Bus-Architektur). Wird sie weggelassen oder die Default-Option -M pc angegeben, wird ein heutiger Standard-PC mit PCI-Bus emuliert. Die möglichen Maschinen-Typen zeigt -M ? an.

Host ~$ qemu -M ?
Supported machines are:
pc         Standard PC (alias of pc-0.11)
pc-0.11    Standard PC (default)
pc-0.10    Standard PC, qemu 0.10
isapc      ISA-only PC
xenpv      Xen Para-virtualized PC

Mit neueren QEMU/KVM-Versionen ändert sich die emulierte Hardware. Erhält QEMU oder die Kernel-based Virtual Machine 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 Platte.img -M pc-0.11

Mit der Option -M 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 Platte.img -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           qemu32
x86          coreduo
x86              486
x86          pentium
x86         pentium2
x86         pentium3
x86           athlon
x86             n270

Ein 486-Prozessor wird mit -cpu 486 emuliert.

Host ~$ qemu Platte.img -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 nicht zur Verfügung.

Host ~$ qemu-system-x86_64 Platte.img

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

Host ~$ qemu-system-x86_64 -M ?
Supported machines are:
pc         Standard PC (alias of pc-0.11)
pc-0.11    Standard PC (default)
pc-0.10    Standard PC, qemu 0.10
isapc      ISA-only PC
xenpv      Xen Para-virtualized 

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

Host ~$ qemu-system-x86_64 -cpu ?
x86           qemu64
x86           phenom
x86         core2duo
x86            kvm64
x86           qemu32
x86          coreduo
x86              486
x86          pentium
x86         pentium2
x86         pentium3
x86           athlon
x86             n270

Zusätzliche CPU-Definitionen können dem CPU-Typ nach einem Komma übergeben werden. In diesem Beispiel wird die hardwareunterstützter Virtualisierung aktiviert. Damit kann zum Beispiel KVM in einer virtuellen Maschine installiert werden.

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

[bearbeiten] 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:

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

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 -M ? an.

Host ~$ qemu-system-sparc -M ?
Supported machines are:
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
xenpv      Xen Para-virtualized PC

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. Unter QEMU ist es zur Zeit nicht möglich Solaris, NetBSD oder OpenBSD 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 -M SPARCClassic Platte.img  \ 
        -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). qemu-system-sparc64 ist noch in der Entwicklung und kann zur Zeit nur einige Kernel booten. Folgende Sun4u-Architekturen werden emuliert:

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

Host ~$ qemu-system-sparc64 -M ?
Supported machines are:
sun4u      Sun4u platform (default)
sun4v      Sun4v platform
Niagara    Sun4v platform, Niagara
xenpv      Xen Para-virtualized PC

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

Der SPARC64-System-Emulator besitzt die gleichen Optionen wie der SPARC32-System-Emulator.

[bearbeiten] 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 -M ? an.

Host ~$ qemu-system-arm -M ?

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

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

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

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

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

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

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

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

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

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

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

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

Host ~$ qemu-system-arm -cpu ?

Die ARM-Emulation unterstützt diese zusätzliche Option:

-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-Filesystem erlaubt und sollte nur bei vertrauenswürdigen Gast-Systemen verwendet werden. Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Zum einen gibt es erhebliche Unterschiede zu einem normalen PC. Zum anderen erschweren Lizenzen-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

[bearbeiten] 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.

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

Host ~$ qemu-system-mips -M ?

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

Die Malta-Emulation unterstützt die folgende Hardware:

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

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

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

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

Host ~$ qemu-system-mips -cpu ?
Host ~$ qemu-system-mips64 -cpu ?

Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich. Ein Beispiel einer virtuellen Maschine mit MIPS-Architektur wird im Abschnitt Gast-Systeme erläutert.

[bearbeiten] 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 -M ? an.

Host ~$ qemu-system-m68k -M ?

Die M5208EVB-Emulation unterstützt folgende Hardware:

Die AN5206-Emulation unterstützt folgende Hardware:

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-Filesystem erlaubt und sollte nur bei vertrauenswürdigen Gast-Systemen verwendet werden. 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

[bearbeiten] 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:

QEMU emuliert die folgende PREP-Hardware:

QEMU verwendet das OpenBIOS (http://www.openbios.org) 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 -M ? an.

Host ~$ qemu-system-ppc -M ?

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

Host ~$ qemu-system-ppc -cpu ?

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

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

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.

[bearbeiten] 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 -M ? an.

Host ~$ qemu-system-sh4 -M ?

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

Host ~$ qemu-system-sh4 -cpu ?

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

[bearbeiten] 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 -M ? an.

Host ~$ qemu-system-cris -M ?

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

Host ~$ qemu-system-cris -cpu ?

[bearbeiten] MicroBlaze

Der Mikrocontroller MicroBlaze wird als Softcore in Hardware-Beschreibungssprachen, wie VHDL (Very High Speed Integrated Circuit Hardware Description Language) oder Verilog HDL, definiert. Dieser 32-Bit RISC Mikrocontroller wird durch ein 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. Die möglichen Maschinen-Typen zeigt -M ? an.

Host ~$ qemu-system-microblaze -M ?
Supported machines are:
petalogix-s3adsp1800 Petalogix linux refdesign for xilinx Spartan 3ADSP1800 (default)

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

Host ~$ qemu-system-microblaze -cpu ?

[bearbeiten] Multiprozessorsysteme

[bearbeiten] 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

[bearbeiten] 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 (siehe http://lse.sourceforge.net/numa/faq/). 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 Resssourcen 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.

[bearbeiten] x86-Virtualisierungen

[bearbeiten] 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 der Befehl kvm angewendet. Bei einigen Distributionen erfolgt der Aufruf mit qemu-system-x86_32, qemu-system-x86_64 oder qemu-kvm.

Host ~$ kvm Platte.img

Wenn die Verwendung der KVM Hardware-unterstützten Virtualisierung unterbunden werden soll, ist die Option -no-kvm anzugeben. 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.

Host ~$ kvm Platte.img -no-kvm

Im QEMU-Monitor zeigt der Befehl info kvm, ob die KVM Hardware-unterstützte Virtualisierung aktiv ist. In diesem Fall wurde sie mit der Option -no-kvm deaktiviert.

(qemu) info kvm
kvm support: disabled

Sind 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 ermöglicht das Betreiben von KVM in einer KVM-Instanz. Dazu muss das Host-System über einen AMD-Prozessor verfügen. 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.

[bearbeiten] Der Accelator KQEMU

Ab QEMU 0.12.0 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.

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 nur KQEMU 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


[bearbeiten] Links


<<<|###| >>>

Von „http://qemu-buch.de/de/index.php/QEMU-KVM-Buch/_Virtuelle_Hardware/_Prozessoren

Diese Seite wurde bisher 7.915 mal abgerufen. Diese Seite wurde zuletzt am 7. März 2010 um 17:52 Uhr geändert. Inhalt ist verfügbar unter der GNU Free Documentation License 1.2.


Finden

Blättern

News

Deutsch
Weitersagen
Bestellen
Tipps für Autoren
Autoren
Impressum


English
Order
Recommendation
The Authors
Contact



Letzte Änderungen
Twitter


Ändern
Seite bearbeiten
Bearbeitungshilfe
Seitenoptionen
Diskussion
Kommentar hinzufügen
Druckversion
Seitendaten
Versionen
Links auf diese Seite
Änderungen an verlinkten Seiten
Meine Seiten
Anmelden
Spezialseiten
Neue Seiten
Dateiliste
Statistik
Kontakt
Mehr …