A fost lansată versiunea proiectului QEMU 7.2. 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 x86. În modul de virtualizare, performanța execuției codului într-un mediu izolat se apropie de un sistem hardware datorită executării directe a instrucțiunilor pe CPU și implicării hypervizorului Xen sau a modulului KVM.
Proiectul a fost inițial creat de Fabrice Bellard pentru a permite rularea fișierelor executabile Linux compilate pentru platforma x86 pe arhitecturi diferite de x86. Pe parcursul anilor de dezvoltare, a fost adăugată suportul pentru emularea completă a 14 arhitecturi hardware, iar numărul dispozitivelor hardware emulabile a depășit 400. În pregătirea versiunii 7.2, au fost aduse peste 1800 de modificări de la 205 dezvoltatori.
Îmbunătățiri cheie adăugate în QEMU 7.2:
- În emulatorul arhitecturii x86, generatorul de cod clasic TCG a adăugat suport pentru instrucțiunile AVX, AVX2, F16C, FMA3 și VAES, și a fost realizată o optimizare a performanței în legătură cu utilizarea instrucțiunilor SSE. Pentru KVM a fost adăugat suportul pentru mecanismul de urmărire a ieșirii din mașina virtuală ("notify vmexit"), care permite ocolirea erorilor din CPU ce pot duce la blocări.
- În emulatorul ARM a fost implementat suportul pentru CPU Cortex-A35 și extensiile de procesor ETS (Enhanced Translation Synchronization), PMUv3p5 (PMU Extensions 3.5), GTG (Guest Translation Granule 4KB, 16KB, 64KB), HAFDBS (control hardware al steagului de acces și starea „dirty”) și E0PD (prevenirea accesului EL0 la hărțile de adrese împărțite).
- În emulatorul LoongArch a fost adăugat suport pentru fw_cfg DMA, conectarea la cald a memoriei și emularea dispozitivelor TPM (Trusted Platform Module).
- În emulatorul arhitecturii OpenRISC a fost implementată platforma ‘virt’ pentru testarea dispozitivelor și utilizarea în sistemele de integrare continuă. A fost implementat suportul pentru execuția multithreading a generatorului de cod clasic TCG (Tiny Code Generator).
- În emulatorul arhitecturii RISC-V, în mașinile emulatoare ‘virt’, a fost implementată posibilitatea de a încărca firmware din pflash în modul S (S-mode). Funcționarea cu arborele de dispozitive a fost îmbunătățită.
- Emulatorul arhitecturii 390x oferă suport pentru extensia MSA5 (Message-Security-Assist Extension 5 cu instrucțiunea PRNO pentru generarea numerelor pseudo-random), instrucțiunile KIMD/KLM (implementarea SHA-512) și interpretarea extinsă zPCI pentru sistemele guest bazate pe hypervisor-ul KVM.
- În backend-urile pentru gestionarea memoriei s-a implementat alocarea prealabilă a memoriei, având în vedere arhitectura NUMA.
- A fost întărit controlul antetelor dispozitivelor de blocare criptate LUKS, adăugându-se opțiunea de a crea imagini LUKS în macOS.
- În backend-ul 9pfs, care permite utilizarea sistemului de fișiere de rețea Plan 9 pentru accesul unei mașini virtuale la alta, s-a trecut la utilizarea hash-ului GHashTable în tabela de identificatori, ceea ce în anumite situații a dus la o creștere a performanței de 6-12 ori.
- Au fost adăugate noi backend-uri netdev stream și dgram.
- În agentul pentru sistemele guest bazate pe arhitectura ARM a fost adăugat suport pentru FreeBSD.
- În versiunile GUI pentru macOS a fost implementată posibilitatea de a include interfețele bazate pe Cocoa și SDL/GTK într-un singur fișier executabil.
- Submodulul încorporat „slirp” a fost eliminat, fiind recomandată utilizarea bibliotecii de sistem libslirp.
- Din cauza imposibilității de a efectua teste, suportul pentru sistemele host cu procesoare MIPS pe 32 de biți, care folosesc ordinea de byte „Big endian”, a fost declarat învechit.
Sursa: opennet.ro
