premiera projektu . Jako emulator QEMU pozwala uruchomić program skompilowany dla jednej platformy sprzętowej na systemie o zupełnie innej architekturze, na przykład uruchomić aplikację dla ARM na komputerze z procesorem zgodnym z x86. W trybie wirtualizacji w QEMU wydajność wykonywania kodu w izolowanym środowisku jest bliska natywnej dzięki bezpośredniemu wykonywaniu instrukcji na CPU i wykorzystaniu hypervisora Xen lub modułu KVM.
Projekt został pierwotnie stworzony przez Fabrice'a Bellarda w celu umożliwienia uruchamiania plików wykonywalnych Linuxa skompilowanych dla platformy x86 na architekturach innych niż x86. W trakcie lat rozwoju dodano wsparcie dla pełnej emulacji 14 architektur sprzętowych, a liczba emulowanych urządzeń przekroczyła 400. W wersji 4.2 wprowadzono ponad 2200 zmian od 198 deweloperów.
Kluczowe , dodanych w QEMU 4.2:
- W klasycznym generatorze kodu TCG (Tiny Code Generator) wprowadzono wsparcie dla wtyczek do monitorowania instrukcji procesora i adresów w pamięci;
- W sterowniku urządzeń blokowych (Network Block Device) zapewniono skuteczniejszą obsługę żądań kopiowania podczas odczytu (copy-on-read). Kod serwera NBD został zoptymalizowany do kopiowania obrazów z lukami. Wprowadzono ogólne ulepszenia w realizacji klienta i serwera NBD;
- Zwiększono wydajność szyfrowania dysków LUKS przy użyciu algorytmu AES-XTS;
- W vfio-pci dodano wsparcie dla właściwości „failover_pair_id” w celu uproszczenia migracji urządzeń VFIO;
- W virtio-mmio dodano wsparcie dla standardu virtio-compatible 2 i określonego w specyfikacji virtio 1.1 mechanizmu pakietowanych wirtualnych kolejek () do wymiany danych z wirtualnym urządzeniem wejścia/wyjścia w trybie pakietowym;
- W emulatorze architektury x86 dodano nowy typ emulowanych maszyn „microvm”, wykorzystujących virtio-mmio zamiast PCI w celu optymalizacji wydajności. Wdrażono możliwość włączania i wyłączania VMX za pomocą flag „-cpu”. Dodano wsparcie dla emulacji rozszerzeń AVX512 BFloat16. Zapewniono wsparcie nowych modeli CPU Denverton (serwerowy SoC oparty na Atom), Snowridge i Dhyana. Stabilizowano wsparcie dla macOS Hypervisor Framework („-accel hvf”);
- W emulatorze architektury ARM dodano wsparcie dla emulacji SoC Aspeed AST2600 („ast2600-evb”). Dodano wsparcie dla technologii Semihosting 2.0 z rozszerzeniami STDOUT_STDERR/EXIT_EXTENDED, co pozwala emulowanemu urządzeniu na korzystanie z stdout, stderr i stdin do tworzenia plików po stronie hosta. W KVM dodano możliwość używania więcej niż 256 CPU i zapewniono wsparcie dla instrukcji SIMD SVE. W maszynach wirtualnych typu „” zrealizowano wsparcie dla gorącego podłączenia pamięci. Zwiększono wydajność emulacji z użyciem generatora kodu TCG.
- W emulatory architekturze PowerPC pojawiła się możliwość emulacji instrukcji POWER9: mffsce, mffscrn i mffscrni. W emulowanych maszynach „powernv” dodano wsparcie dla urządzeń systemowych Homer i OCC SRAM.
- W emulatory architektury RISC-V dodano opcję „-initrd” oraz możliwość przeglądania pełnego stanu architektury w debugerze.
- W emulatorze architektury s390 wprowadzono wsparcie dla instrukcji IEP (Instruction Execution Protection).
- W emulatorze architektury 68k dodano początkową możliwość emulacji Macintosh Quadro 800 oraz klasycznych systemów NeXTcube.
- W emulatorze architektury xtensa dodano nowy typ emulowanych maszyn „virt” oraz wdrożono wsparcie dla ABI call0 do emulacji w przestrzeni użytkownika.
Źródło: opennet.ru
