Przedstawiono wydanie projektu QEMU 7.2. Jako emulator QEMU pozwala na uruchomienie programu zbudowanego dla jednej platformy sprzętowej na systemie o zupełnie innej architekturze, np. uruchomienie aplikacji ARM na komputerze zgodnym z x86. W trybie wirtualizacji w QEMU wydajność wykonywania kodu w odizolowanym środowisku jest zbliżona do systemu sprzętowego ze względu na bezpośrednie wykonywanie instrukcji na CPU oraz wykorzystanie hiperwizora Xen lub modułu KVM.
Projekt został pierwotnie stworzony przez Fabrice'a Bellarda w celu zapewnienia możliwości uruchamiania plików wykonywalnych skompilowanych dla platformy x86. Linux na architekturach innych niż x86. W ciągu lat rozwoju dodano obsługę pełnej emulacji dla 14 architektur sprzętowych, a liczba emulowanych urządzeń przekroczyła 400. Podczas przygotowywania wersji 7.2 wprowadzono ponad 1800 zmian przez 205 programistów.
Kluczowe ulepszenia dodane w QEMU 7.2:
- Emulator architektury x86 w klasycznym generatorze kodu TCG dodał obsługę instrukcji AVX, AVX2, F16C, FMA3 i VAES, a także optymalizacje wydajności związane z wykorzystaniem instrukcji SSE. KVM Dodano obsługę mechanizmu monitorowania wyjść maszyn wirtualnych („notify vmexit”), który umożliwia pominięcie błędów procesora, które mogą prowadzić do zawieszenia.
- Emulator ARM obsługuje procesor Cortex-A35 i rozszerzenia procesora ETS (Enhanced Translation Synchronization), PMUv3p5 (PMU Extensions 3.5), GTG (Guest Translation Granule 4KB, 16KB, 64KB), HAFDBS (sprzętowa kontrola flagi dostępu i stanu „brudnego”) i E0PD (zapobieganie dostępowi EL0 do podzielonych map adresów).
- Emulator LoongArch dodaje obsługę fw_cfg DMA, pamięci typu hot-plug i emulacji urządzenia TPM (Trusted Platform Module).
- Emulator architektury OpenRISC implementuje platformę „virt” do testowania urządzeń i wykorzystania ich w systemach ciągłej integracji. Zaimplementowano obsługę wielowątkowej realizacji klasycznego generatora kodu TCG (Tiny Code Generator).
- Emulator architektury RISC-V w maszynach emulowanych typu „virt” ma możliwość ładowania oprogramowania sprzętowego z pflash w trybie S-mode. Poprawiona praca z drzewem urządzeń.
- Emulator 390x zapewnia obsługę MSA5 (Message-Security-Assist Extension 5 z instrukcją PRNO do generowania liczb pseudolosowych), instrukcji KIMD/KLM (implementacja SHA-512) oraz rozszerzoną interpretację zPCI dla systemów gościnnych w oparciu o hiperwizor KVM .
- Backendy do pracy z pamięcią zapewniają wstępną alokację pamięci z uwzględnieniem architektury NUMA.
- Ulepszona weryfikacja nagłówków urządzeń blokowych szyfrowanych LUKS, dodano możliwość tworzenia obrazów LUKS w macOS.
- Backend 9pfs, który umożliwia wykorzystanie sieciowego systemu plików Plan 9 w celu uzyskania dostępu z jednej maszyny wirtualnej do drugiej, przeszedł na używanie skrótu GHashTable w tabeli identyfikatorów, co w niektórych sytuacjach doprowadziło do 6-12-krotnego wzrostu wydajności.
- Dodano nowy strumień i dgram zaplecza Netdev.
- Do agenta dodano obsługę FreeBSD dla gości opartych na architekturze ARM.
- W zestawach GUI dla macOS Dodano możliwość uwzględnienia interfejsów opartych na Cocoa i SDL/GTK w jednym pliku wykonywalnym.
- Wbudowany podmoduł „slirp” został usunięty, zamiast tego zaleca się korzystanie z biblioteki systemowej libslirp.
- Ze względu na brak możliwości testowania obsługa systemów hostów z 32-bitowymi procesorami MIPS korzystającymi z kolejności bajtów Big Endian została wycofana.
Źródło: opennet.ru
