A apărut versiunea 10.0.0 a proiectului QEMU. Ca emulator, QEMU permite rularea unui program compilat pentru o platformă hardware pe un sistem cu o arhitectură complet diferită, de exemplu, executarea unei aplicații pentru ARM pe un PC compatibil cu x86. În modul de virtualizare, performanța execuției codului într-un mediu izolat se apropie de cea a unui sistem hardware datorită execuției directe a instrucțiunilor pe CPU și utilizării hipervizorului Xen sau a modulului KVM în Linux, sau a modulului NVMM în NetBSD.
Proiectul a fost inițial creat de Fabrice Bellard cu scopul de a permite rularea fișierelor executabile Linux compilate pentru platforma x86 pe arhitecturi diferite de x86. De-a lungul anilor de dezvoltare, a fost adăugată suportul pentru emularea completă a 14 arhitecturi hardware, numărul de dispozitive hardware emulate depășind 400. La pregătirea versiunii 10.0, au fost realizate peste 2800 de modificări de către 211 dezvoltatori.
Îmbunătățirile cheie adăugate în QEMU 10.0:
- În driverul virtio-scsi, care oferă un controler SCSI virtual (SCSI Host Bus Adapter) pentru mașini virtuale, a fost adăugată suportul pentru un sistem de cozi multilevel (multiqueue), care permite împărțirea cozilor pentru diferite dispozitive de stocare pentru a asigura accesul multi-thread pe sisteme multicore (cozile diferite ale unui singur dispozitiv pot fi gestionate de fire de execuție diferite). Comparativ cu driverul dispozitivului de bloc virtual (virtio-blk), controlerul SCSI virtual este puțin mai lent, dar permite utilizarea a mai mult de 28 de discuri.
- În VFIO (Virtual Function I/O) a fost îmbunătățit suportul pentru redirecționarea IGD (Integrated Graphics Device) pentru GPU integrate utilizate în generațiile 11 (Rocket Lake) și 12 (Alder Lake) de procesoare Intel. A fost adăugat suport pentru GPU-uri mai vechi ATI (x550). A fost implementat suportul de bază pentru PCI PM (Power Management).
- Documentația pentru protocolul QMP (QEMU Machine Protocol) a fost complet rescrisă și extinsă, permițând aplicațiilor să gestioneze QEMU.
- A fost adăugat un nou mod de Live-migrație numit „cpr-transfer” (CheckPoint and Restart), care permite mutarea sistemului găzduit într-o nouă instanță QEMU lansată pe același gazdă. Acest mod minimizează timpul de suspendare, deoarece memoria sistemului găzduit este redată în spațiul de adresare virtual al noului QEMU fără copierea conținutului.
- Au fost adăurate dispozitive grafice 'apple-gfx-pci' și 'apple-gfx-mmio', care utilizează frameworkul ParavirtualizedGraphics, oferit în macOS pentru accelerarea hardware-ului grafic în sistemele gazdă. Primul driver este destinat utilizării pe dispozitive x86-64, iar al doilea — ARM64.
- În emulatorul arhitecturii x86 a fost implementat suport pentru modelele de procesoare Intel Xeon Clearwater Forest și Sierra Forest v2. A fost accelerată emularea instrucțiunilor pentru manipularea datelor de tip string.
- În emulatorul arhitecturii ARM a fost implementat suport pentru plăcile NPCM8445 Evaluation și i.MX 8M Plus EVK. A fost adăugată emularea extensiilor FEAT_AFP, FEAT_RPRES și FEAT_XS, precum și a temporizatoarelor fizice și virtuale EL2. Suportul pentru CPU Arm PXA2xx și emularea instrucțiunilor iwMMXt au fost declarate depășite.
- În emulatorul arhitecturii RISC-V s-a realizat emularea plăcii Microblaze V, CPU Ascalon și CPU RV64 Xiangshan Nanhu. A fost adăugată suport pentru extensiile arhitecturii setului de instrucțiuni 'svukte', 'ssstateen', 'smrnmi', 'smdbltrp'/'ssdbltrp', 'supm', 'sspm', precum și etichetele de translație IOMMU și dispozitivele riscv-iommu-sys.
- În emulatorul arhitecturii HPPA s-a realizat emularea plăcilor Diva GSP BMC. Firmware-ul SeaBIOS-hppa a fost actualizat până la versiunea 18. A fost crescută viteza de translație. Codul pentru resetarea CPU-ului virtual a fost îmbunătățit. În sistemele de 64 de biți s-a realizat emularea configurațiilor cu mărimea memoriei de până la 256 GB.
- În emulatorul arhitecturii LoongArch a fost adăugat suport pentru conectarea la cald a CPU-urilor. A fost implementat un IPI (inter-processor interrupt) paravirtualizat. S-a asigurat monitorizarea timpului de așteptare pentru furnizarea resurselor de la hipervizor. KVMA fost adăugat suport pentru rutarea virtuală a întreruperilor externe (extioi).
- În emulatorul arhitecturii s390x a fost adăugat suport pentru a 17-a generație de CPU-uri mainframe și s-a implementat suport pentru virtio-mem. Pentru a îmbunătăți performanța, a fost adăugată capacitatea de interacțiune cu dispozitivele PCI ocolind IOMMU.
Sursa: opennet.ro
