Projektveröffentlichung . Als Emulator ermöglicht QEMU das AusfĂŒhren von Programmen, die fĂŒr eine Hardwareplattform kompiliert wurden, auf einem System mit völlig anderer Architektur, beispielsweise das AusfĂŒhren einer Anwendung fĂŒr ARM auf einem x86-kompatiblen PC. Im Virtualisierungsmodus erreicht QEMU in einer isolierten Umgebung eine nahezu native CodeausfĂŒhrungsleistung durch direkte BefehlsausfĂŒhrung auf der CPU und die Nutzung des Hypervisors Xen oder des KVM-Moduls.
UrsprĂŒnglich wurde das Projekt von Fabrice Bellard ins Leben gerufen, um die AusfĂŒhrung von fĂŒr die x86-Plattform kompilierten Linux-Programmen auf von x86 unterschiedlichen Architekturen zu ermöglichen. Im Laufe der Jahre wurde die UnterstĂŒtzung fĂŒr die vollstĂ€ndige Emulation von 14 Hardware-Architekturen hinzugefĂŒgt, und die Zahl der emulierten HardwaregerĂ€te ĂŒberstieg 400. Bei der Vorbereitung der Version 4.2 wurden ĂŒber 2200 Ănderungen von 198 Entwicklern vorgenommen.
Hauptmerkmale , hinzugefĂŒgt in QEMU 4.2:
- Der klassische Code-Generator TCG (Tiny Code Generator) unterstĂŒtzt jetzt Plugins zur Ăberwachung von Prozessoranweisungen und Adressen im Speicher;
- Im BlockgerĂ€te-Treiber (Network Block Device) wurde eine effizientere Verarbeitung von Kopieranfragen beim Lesen (copy-on-read) sichergestellt. Der NBD-Servercode wurde fĂŒr das Kopieren sparsamer Images (mit LĂŒcken) optimiert. Allgemeine Verbesserungen in der Implementierung des NBD-Clients und -Servers wurden vorgenommen;
- Die Leistung der LUKS-DatentrĂ€gerverschlĂŒsselung unter Verwendung des AES-XTS-Algorithmus wurde verbessert;
- In vfio-pci wurde die UnterstĂŒtzung fĂŒr die Eigenschaft âfailover_pair_idâ zur Vereinfachung der Migration von VFIO-GerĂ€ten hinzugefĂŒgt;
- In virtio-mmio wurde die UnterstĂŒtzung des virtio-kompatiblen Standards 2 und des in der Spezifikation virtio 1.1 definierten Mechanismus der gepackten virtuellen Warteschlangen () fĂŒr den Datenaustausch mit virtuellen Eingabe-/AusgabegerĂ€ten im Batch-Modus hinzugefĂŒgt;
- Im Emulator der x86-Architektur wurde ein neuer Typ emulierter Maschinen âmicrovmâ eingefĂŒhrt, der virtio-mmio anstelle von PCI zur Leistungsoptimierung verwendet. Die Möglichkeit zur Aktivierung und Deaktivierung von VMX ĂŒber die Flags â-cpuâ wurde implementiert. Die UnterstĂŒtzung fĂŒr die Emulation von AVX512 BFloat16-Erweiterungen wurde hinzugefĂŒgt. Die UnterstĂŒtzung neuer CPU-Modelle Denverton (Server-SoC auf Basis von Atom), Snowridge und Dhyana wurde sichergestellt. Die UnterstĂŒtzung des macOS Hypervisor Frameworks (â-accel hvfâ) wurde stabilisiert;
- Im Emulator der ARM-Architektur wurde die UnterstĂŒtzung fĂŒr die Emulation des SoC Aspeed AST2600 (âast2600-evbâ) hinzugefĂŒgt. Die UnterstĂŒtzung fĂŒr Semihosting 2.0 mit den Erweiterungen STDOUT_STDERR/EXIT_EXTENDED wurde implementiert, die es dem emulierten GerĂ€t ermöglichen, stdout, stderr und stdin zu verwenden, um Dateien auf der Hostseite zu erstellen. In KVM wurde die Möglichkeit hinzugefĂŒgt, mehr als 256 CPU zu verwenden, und die UnterstĂŒtzung fĂŒr SIMD-Anweisungen SVE sichergestellt. In virtuellen Maschinen mit dem Typ ââ wurde die UnterstĂŒtzung fĂŒr das Hotplugging von Speicher implementiert. Die Leistung der Emulation unter Verwendung des TCG-Codegenerators wurde erhöht.
- Im PowerPC-Architekture-Emulator wurde die Möglichkeit zur Emulation von POWER9-Befehlen mffsce, mffscrn und mffscrni hinzugefĂŒgt. In den emulierten Maschinen âpowernvâ wurde die UnterstĂŒtzung fĂŒr die SystemgerĂ€te Homer und OCC SRAM integriert;
- Im RISC-V-Architekture-Emulator wurde die Option â-initrdâ sowie die Möglichkeit zur Anzeige des vollstĂ€ndigen Architekturstatus im Debugger hinzugefĂŒgt;
- Im s390-Architekture-Emulator wurde die UnterstĂŒtzung fĂŒr IEP-Befehle (Instruction Execution Protection) implementiert;
- Im 68k-Architekture-Emulator wurde die erste Möglichkeit zur Emulation des Macintosh Quadro 800 und klassischer NeXTcube-Systeme hinzugefĂŒgt;
- Im xtensa-Architekture-Emulator wurde ein neuer Typ emulierter Maschinen âvirtâ hinzugefĂŒgt und die UnterstĂŒtzung fĂŒr ABI call0 zur Emulation im Benutzerspeicher implementiert.
Quelle: opennet.ru
