wydanie projektu . Jako emulator QEMU pozwala na uruchomienie programu skompilowanego dla jednej platformy sprzętowej na systemie o zupełnie innej architekturze, np. uruchomienie aplikacji ARM na komputerze PC zgodnym z x86. W trybie wirtualizacji w QEMU wydajność wykonywania kodu w izolowanym środowisku jest zbliżona do systemu natywnego dzięki bezpośredniemu wykonywaniu instrukcji na procesorze oraz zastosowaniu hypervisora 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 4.1 wprowadzono ponad 2000 zmian przez 276 programistów.
Klucz dodano w QEMU 4.1:
- Do emulatora architektury x86 dodano obsługę modeli procesorów Hygon Dhyana i Intel SnowRidge. Dodano emulację rozszerzenia RDRAND (sprzętowy generator liczb pseudolosowych). Dodano flagi
md-clear i mds-no do kontrolowania ochrony przed atakami (Próbkowanie danych mikroarchitektury) na procesorach Intel. Dodano możliwość określenia topologii układów scalonych za pomocą flagi „-smp…,dies=”. Wersjonowanie zostało zaimplementowane dla wszystkich modeli procesorów x86; - Sterownik bloku SSH został przeniesiony z użycia na ;
- Sterownik virtio-gpu (wirtualny procesor graficzny opracowany w ramach projektu ) dodano obsługę przenoszenia operacji renderowania 2D/3D do zewnętrznego procesu użytkownika vhost (na przykład vhost-user-gpu);
- Emulator architektury ARM dodał obsługę rozszerzenia ARMv8.5-RNG służącego do generowania liczb pseudolosowych. Zaimplementowano obsługę emulacji FPU dla układów z rodziny Cortex-M i rozwiązano problemy z emulacją FPU dla Cortex-R5F. Zaproponowano nowy system ustawiania opcji kompilacji, zaprojektowany w stylu Kconfig. Dla SoC Exynos4210 dodano obsługę kontrolerów PL330 DMA;
- Emulator architektury MIPS ulepszył obsługę instrukcji MSA ASE podczas korzystania z kolejności bajtów typu big-endian i dostosował obsługę dzielenia przez zero do sprzętu referencyjnego. Zwiększono wydajność emulacji instrukcji MSA do obliczeń liczb całkowitych i operacji permutacji;
- Emulator architektury PowerPC obsługuje teraz przekazywanie do procesorów graficznych NVIDIA V100/NVLink2 przy użyciu VFIO. W przypadku pserie zaimplementowano przyspieszenie emulacji kontrolera przerwań XIVE i dodano obsługę podłączania mostów PCI na gorąco. Dokonano optymalizacji emulacji instrukcji wektorowych (Altivec/VSX);
- Do emulatora architektury RISC-V dodano nowy model sprzętu – „spike”. Dodano obsługę ISA 1.11.0. Udoskonalono 32-bitowe wywołanie systemowe ABI, udoskonalono obsługę nieprawidłowych instrukcji i udoskonalono wbudowany debugger. Dodano obsługę topologii procesora w drzewie urządzeń;
- Emulator architektury s390 dodał obsługę emulacji wszystkich instrukcji wektorowych z grupy „Vector Facility” oraz dodał dodatkowe elementy do obsługi systemów gen15 (w tym dodano obsługę funkcji przerywania kolejki AP dla vfio-ap). Zaimplementowano obsługę BIOS-u przy uruchamianiu z ECKD DASD powiązanego z systemem gościa poprzez vfio-ccw;
- W emulatorze architektury SPARC dla systemów sun4m rozwiązano problemy z użyciem flagi „-vga none” dla OpenBIOS;
- Emulator procesora z rodziny Tensilica Xtensa zawiera opcje MPU (jednostki ochrony pamięci) i wyłącznego dostępu;
- Do polecenia „qemu-img Convert” dodano opcję „-salvage”, aby wyłączyć awarię procesu konwersji obrazu w przypadku błędów we/wy (można na przykład użyć do przywrócenia częściowo uszkodzonych plików qcow2). W zespole
„qemu-img rebase” działa, gdy nie utworzono jeszcze pliku kopii zapasowej dla pliku wejściowego; - Dodano możliwość przekierowywania danych wyjściowych zorganizowanych przy użyciu technologii „semihosting” (pozwala emulowanemu urządzeniu używać stdout, stderr i stdin do tworzenia plików po stronie hosta) do zaplecza chardev („-semihosting-config Enable=on,target=native ,chardev=[identyfikator]");
- Dodano obsługę podformatu seSparse w trybie tylko do odczytu w sterowniku blokowym VMDK;
- Dodano obsługę kontrolera SiFive GPIO w sterowniku emulacji GPIO.
Źródło: opennet.ru
