Wydanie emulatora QEMU 7.2

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, aby umożliwić uruchamianie plików wykonywalnych Linuksa zbudowanych dla platformy x86 na architekturach innych niż x86. Przez lata rozwoju dodano pełną obsługę emulacji dla 14 architektur sprzętowych, liczba emulowanych urządzeń sprzętowych przekroczyła 400. W ramach przygotowań do wersji 7.2 dokonano ponad 1800 zmian od 205 programistów.

Kluczowe ulepszenia dodane w QEMU 7.2:

  • Emulator 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. Dla KVM dodano obsługę mechanizmu śledzenia wyjść maszyny wirtualnej („notify vmexit”), który pozwala ominąć błędy procesora mogące 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.
  • Wzmocniono sprawdzanie nagłówków urządzeń blokowych zaszyfrowanych LUKS i dodano możliwość tworzenia obrazów LUKS w systemie 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.
  • Kompilacje GUI dla systemu macOS umożliwiają dołączenie 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

Dodaj komentarz