Wydano wydanie projektu QEMU 7.2. Jako emulator QEMU umożliwia uruchomienie programu skompilowanego dla jednej platformy sprzętowej na systemie o zupełnie innej architekturze, na przykład uruchomienie aplikacji dla ARM na komputerze kompatybilnym z x86. W trybie wirtualizacji w QEMU wydajność wykonania kodu w izolowanym środowisku zbliża się do systemu sprzętowego dzięki bezpośredniemu wykonywaniu instrukcji na CPU oraz wykorzystaniu hipernadzorcy Xen lub modułu KVM.
Początkowo projekt został stworzony przez Fabrice'a Bellarda w celu umożliwienia uruchamiania skompilowanych dla platformy x86 plików wykonywalnych Linux na architekturach innych niż x86. Na przestrzeni lat rozwoju dodano wsparcie dla pełnej emulacji 14 architektur sprzętowych, a liczba emulowanych urządzeń sprzętowych przekroczyła 400. Przygotowując wersję 7.2 wprowadzono ponad 1800 zmian od 205 deweloperów.
Kluczowe ulepszenia dodane w QEMU 7.2:
- W emulatorze architektury x86 w klasycznym generatorze kodu TCG dodano wsparcie dla instrukcji AVX, AVX2, F16C, FMA3 i VAES, a także przeprowadzono optymalizację wydajności związaną z wykorzystaniem instrukcji SSE. Dla KVM Dodano wsparcie dla mechanizmu śledzenia wyjścia z maszyny wirtualnej („notify vmexit”), umożliwiającego omijanie błędów w CPU, które mogą prowadzić do zawieszenia.
- W emulatorze ARM wdrożono wsparcie dla CPU Cortex-A35 oraz rozszerzeń procesora ETS (Enhanced Translation Synchronization), PMUv3p5 (Rozszerzenia PMU 3.5), GTG (Guest Translation Granule 4KB, 16KB, 64KB), HAFDBS (sprzętowe zarządzanie flagą dostępu i stanem „dirty”) oraz E0PD (zapobieganie dostępowi EL0 do podzielonych map adresowych).
- W emulatorze LoongArch dodano wsparcie dla fw_cfg DMA, gorącego podłączenia pamięci oraz emulacji urządzeń TPM (Trusted Platform Module).
- W emulatorze architektury OpenRISC wdrożono platformę 'virt' do testowania urządzeń i używania w systemach ciągłej integracji. Wdrożono wsparcie dla wielowątkowego wykonania klasycznego generatora kodu TCG (Tiny Code Generator).
- W emulatorze architektury RISC-V w emulowanych maszynach 'virt' wdrożono możliwość ładowania oprogramowania z pflash w trybie S (S-mode). Udoskonalono współpracę z drzewem urządzeń.
- W emulatorze architektury 390x zapewniono wsparcie dla rozszerzenia MSA5 (Message-Security-Assist Extension 5 z instrukcją PRNO do generowania pseudolosowych liczb), instrukcji KIMD/KLM (implementacja SHA-512) oraz rozszerzonej interpretacji zPCI dla systemów gości opartych na hipernadzorcy KVM.
- W backendzie do obsługi pamięci wprowadzono wstępne przydzielanie pamięci z uwzględnieniem architektury NUMA.
- Wzmożono kontrolę nagłówków szyfrowanych blokowych urządzeń LUKS, dodano możliwość tworzenia obrazów LUKS w macOS.
- W backendzie 9pfs, umożliwiającym korzystanie z sieciowego systemu plików Plan 9 do uzyskiwania dostępu jednej maszyny wirtualnej do drugiej, dokonano przejścia na wykorzystanie hasha GHashTable w tabeli identyfikatorów, co w niektórych sytuacjach prowadziło do zwiększenia wydajności od 6 do 12 razy.
- Dodano nowe backendy netdev stream i dgram.
- W agencie dla systemów gości opartych na architekturze ARM dodano wsparcie dla FreeBSD.
- W wersjach GUI dla macOS zapewniono możliwość połączenia interfejsów opartych na Cocoa oraz SDL/GTK w jeden plik wykonywalny.
- Usunięto wbudowany podmoduł „slirp”, zamiast którego zaleca się używanie systemowej biblioteki libslirp.
- Z powodu braku możliwości testowania, wsparcie dla systemów gospodarzy z 32-bitowymi procesorami MIPS, korzystających z porządku bajtów „Big endian”, zostało ogłoszone za przestarzałe.
Źródło: opennet.ru
