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.
Pierwotnie projekt został stworzony przez Fabrica Bellarda z myślą o zapewnieniu możliwości uruchamiania skompilowanych do platformy x86 plików wykonywalnych Linux na architekturach innych niż x86. W ciągu lat rozwoju dodano wsparcie dla pełnej emulacji 14 architektur sprzętowych, a liczba emulowanych urządzeń przekroczyła 400. Przygotowując wersję 4.1, wprowadzono ponad 2000 zmian od 276 deweloperów.
Kluczowe , dodane w QEMU 4.1:
- Do emulatora architektury x86 dodano wsparcie dla modeli CPU Hygon Dhyana oraz Intel SnowRidge. Dodano emulację rozszerzenia RDRAND (sprzętowy generator liczb pseudolosowych). Dodano flagi
md-clear i mds-no do zarządzania ochroną przed atakami (Microarchitectural Data Sampling) na procesorach Intel. Dodano możliwość definiowania topologii układów scalonych za pomocą flagi „-smp …,dies=”. Wprowadzono wersjonowanie dla wszystkich modeli CPU x86; - Blokowy sterownik SSH został przeniesiony z użycia na ;
- W sterowniku virtio-gpu (wirtualny GPU, rozwijany w ramach projektu ) dodano wsparcie dla przenoszenia operacji rysowania 2D/3D do zewnętrznego procesu vhost-user (np. vhost-user-gpu);
- W emulatorze architektury ARM dodano wsparcie dla rozszerzenia ARMv8.5-RNG do generowania liczb pseudolosowych. Wprowadzono wsparcie dla emulacji FPU dla chipów z rodziny Cortex-M i rozwiązano problemy z emulacją FPU dla Cortex-R5F. Zaproponowano nowy system konfiguracji opcji kompilacji w stylu Kconfig. Dla SoC Exynos4210 dodano wsparcie dla kontrolerów DMA PL330;
- W emulatorze architektury MIPS poprawiono wsparcie dla instrukcji MSA ASE przy użyciu porządku bajtów big-endian oraz dostosowano przetwarzanie przypadków dzielenia przez zero do wzorcowego sprzętu. Zwiększono wydajność emulacji instrukcji MSA dla obliczeń całkowitych i operacji mieszania;
- W emulatorze architektury PowerPC dodano wsparcie dla przekazywania do GPU NVIDIA V100/NVLink2 za pomocą VFIO. Dla pseries zrealizowano przyspieszenie emulacji kontrolera przerwań XIVE i dodano wsparcie dla hot-plug PCI bridges. Wprowadzono optymalizacje w emulacji instrukcji wektorowych (Altivec/VSX);
- W emulatorze architektury RISC-V dodano nowy model sprzętowy — „spike”. Dodano wsparcie dla ISA 1.11.0. Ulepszono 32-bitowy ABI wywołań systemowych, rozszerzono przetwarzanie nielegalnych instrukcji i poprawiono wbudowany debugger. Dodano wsparcie dla topologii CPU w device tree;
- W emulatorze architektury s390 dodano wsparcie dla emulacji wszystkich instrukcji wektorowych grupy „Vector Facility” oraz dodano dodatkowe elementy do wsparcia systemów gen15 (w tym dodano wsparcie dla AP Queue Interruption Facility dla vfio-ap). Zrealizowano wsparcie BIOS dla uruchamiania z ECKD DASD, podłączonego do systemu gościnnego poprzez vfio-ccw;
- W emulatorze architektury SPARC dla systemów sun4m rozwiązano problemy z używaniem flagi „-vga none” dla OpenBIOS;
- W emulatorze procesorów rodziny Tensilica Xtensa zrealizowano opcje dla MPU (jednostka ochrony pamięci) i ekskluzywnego dostępu;
- Do polecenia „qemu-img convert” dodano opcję „—salvage” do wyłączenia awaryjnego zakończenia procesu konwersji obrazu w przypadku wystąpienia błędów we/wy (na przykład można stosować do odzyskiwania częściowo uszkodzonych plików qcow2). W poleceniu
„qemu-img rebase” zapewniono działanie, gdy dla pliku wejściowego jeszcze nie utworzono pliku bazowego (backing); - Dodano możliwość przekierowania wyjścia, zorganizowanego przy użyciu technologii „semihosting” (pozwala emulowanemu urządzeniu na korzystanie z stdout, stderr i stdin do tworzenia plików po stronie hosta), do backendu chardev („-semihosting-config enable=on,target=native,chardev=[ID]”);
- W blokowym sterowniku VMDK dodano wsparcie dla subformatu seSparse w trybie tylko do odczytu;
- W sterowniku emulacji GPIO dodano wsparcie dla kontrolera GPIO SiFive.
Źródło: opennet.ru
