Veröffentlichung des QEMU 4.2 Emulators

Vorstellung Projektveröffentlichung QEMU 4.2. 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 Verbesserungen, 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 NBD (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 (virtqueue) 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 „virt“ 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

60GB SSD 8Gb DDR4