Zaprezentowano wydanie projektu QEMU 6.1. Jako emulator, QEMU pozwala uruchomić program skompilowany dla jednej platformy sprzętowej na systemie o zupełnie innej architekturze, na przykład, aby uruchomić aplikację dla ARM na kompatybilnym z x86 PC. W trybie wirtualizacji w QEMU wydajność wykonania kodu w izolowanym środowisku jest zbliżona do systemu sprzętowego dzięki bezpośredniemu wykonaniu instrukcji na CPU i wykorzystaniu hyperwizora Xen lub modułu KVM.
Pierwotnie projekt został stworzony przez Fabrice'a Bellarda w celu umożliwienia uruchamiania plików wykonywalnych Linux skompilowanych dla platformy x86 na architekturach innych niż x86. W ciągu lat rozwoju dodano pełną emulację dla 14 architektur sprzętowych, a liczba emulowanych urządzeń przekroczyła 400. Przygotowując wersję 6.1, wprowadzono ponad 3000 zmian od 221 programistów.
Kluczowe ulepszenia dodane w QEMU 6.1:
- W QMP (QEMU Machine Protocol) dodano polecenie „blockdev-reopen” do zmiany ustawień już utworzonego urządzenia blokowego.
- Jako priorytetowy sterownik kryptograficzny zastosowano gnutls, który przewyższa inne sterowniki pod względem wydajności. Wcześniej domyślnie oferowany sterownik oparty na libgcrypt został przeniesiony do opcji, a sterownik na bazie nettle pozostawiono jako opcję zapasową, używaną przy braku GnuTLS i Libgcrypt.
- Do emulatora I2C dodano wsparcie dla PMBus i multiplekserów I2C (pca9546, pca9548).
- Domyślnie włączono wsparcie dla wtyczek do klasycznego generatora kodu TCG (Tiny Code Generator). Dodano nowe wtyczki execlog (dziennik wykonania) oraz cache modelling (symulacja zachowania pamięci podręcznej L1 w CPU).
- W emulatorze ARM dodano wsparcie dla płytek opartych na chipach Aspeed (rainier-bmc, quanta-q7l1), npcm7xx (quanta-gbs-bmc) oraz Cortex-M3 (stm32vldiscovery). Dodano wsparcie dla sprzętowych silników szyfrujących i haszujących zawartych w chipach Aspeed. Dodano wsparcie dla emulacji instrukcji SVE2 (w tym bfloat16), operatorów mnożenia macierzy oraz poleceń resetowania buforów asocjacyjnej translacji (TLB).
- W emulatorze architektury PowerPC dla emulowanych maszyn „pseries” dodano wsparcie dla identyfikacji awarii podczas gorącego podłączania urządzeń w nowych środowiskach gościnnych, zwiększono limit liczby CPU oraz zaimplementowano emulację niektórych instrukcji specyficznych dla procesorów POWER10. Dodano wsparcie dla płyt opartych na chipach Genesi/bPlan Pegasos II (pegasos2).
- W emulatorze RISC-V zaimplementowano wsparcie dla platformy OpenTitan oraz wirtualnego GPU virtio-vga (opartego na virgl).
- W emulatorze s390 dodano wsparcie dla 16. generacji CPU oraz rozszerzeń wektorowych.
- W emulatorze x86 dodano wsparcie dla nowych modeli CPU Intel (Skylake-Client-v4, Skylake-Server-v5, Cascadelake-Server-v5, Cooperlake-v2, Icelake-Client-v3, Icelake-Server-v5, Denverton-v3, Snowridge-v3, Dhyana-v2), w których zaimplementowano instrukcję XSAVES. W emulatorze chipsetu Q35 (ICH9) wprowadzono wsparcie dla gorącego podłączania urządzeń PCI. Ulepszono emulację rozszerzeń wirtualizacji oferowanych w procesorach AMD. Dodano opcję bus-lock-ratelimit do ograniczenia intensywności blokowania szyny przez system gościnny.
- Dodano wsparcie dla wykorzystania NVMM jako przyspieszacza dla hypervisora, rozwijanego przez projekt NetBSD.
- W GUI wsparcie dla uwierzytelniania hasłem przy użyciu protokołu VNC jest teraz włączane tylko przy budowie z zewnętrznym backendem kryptograficznym (gnutls, libgcrypt lub nettle).
Źródło: opennet.ru
