Rilascio dell'emulatore QEMU 7.2

Viene presentato il rilascio del progetto QEMU 7.2. Come emulatore, QEMU consente di eseguire un programma creato per una piattaforma hardware su un sistema con un'architettura completamente diversa, ad esempio eseguire un'applicazione ARM su un PC compatibile con x86. Nella modalità di virtualizzazione in QEMU, le prestazioni dell'esecuzione del codice in un ambiente isolato sono simili a quelle di un sistema hardware a causa dell'esecuzione diretta delle istruzioni sulla CPU e dell'uso dell'hypervisor Xen o del modulo KVM.

Il progetto è stato originariamente creato da Fabrice Bellard per consentire agli eseguibili Linux creati per la piattaforma x86 di funzionare su architetture non x86. Nel corso degli anni di sviluppo, è stato aggiunto il supporto completo dell'emulazione per 14 architetture hardware, il numero di dispositivi hardware emulati ha superato i 400. In preparazione alla versione 7.2, sono state apportate più di 1800 modifiche da 205 sviluppatori.

Principali miglioramenti aggiunti in QEMU 7.2:

  • L'emulatore x86 nel classico generatore di codice TCG ha aggiunto il supporto per le istruzioni AVX, AVX2, F16C, FMA3 e VAES, nonché ottimizzazioni delle prestazioni relative all'uso delle istruzioni SSE. Per KVM è stato aggiunto il supporto per un meccanismo di tracciamento delle uscite della macchina virtuale ("notifica vmexit"), che consente di aggirare gli errori nella CPU che possono portare a blocchi.
  • L'emulatore ARM supporta CPU Cortex-A35 e estensioni del processore ETS (Enhanced Translation Synchronization), PMUv3p5 (PMU Extensions 3.5), GTG (Guest Translation Granule 4KB, 16KB, 64KB), HAFDBS (controllo hardware del flag di accesso e dello stato "dirty") ed E0PD (impedendo l'accesso EL0 alle mappe degli indirizzi partizionati).
  • L'emulatore LoongArch aggiunge il supporto per fw_cfg DMA, memoria hot plug ed emulazione di dispositivi TPM (Trusted Platform Module).
  • L'emulatore dell'architettura OpenRISC implementa la piattaforma "virt" per testare i dispositivi e utilizzarli in sistemi di integrazione continua. È stato implementato il supporto per l'esecuzione multi-thread del classico generatore di codice TCG (Tiny Code Generator).
  • L'emulatore dell'architettura RISC-V nelle macchine emulate 'virt' ha la capacità di caricare il firmware da pflash in modalità S. Lavoro migliorato con l'albero dei dispositivi.
  • L'emulatore 390x fornisce supporto per MSA5 (Message-Security-Assist Extension 5 con istruzione PRNO per la generazione di numeri pseudo-casuali), istruzioni KIMD/KLM (implementazione di SHA-512) e interpretazione zPCI estesa per sistemi guest basati sull'hypervisor KVM.
  • I backend per lavorare con la memoria forniscono la preallocazione della memoria tenendo conto dell'architettura NUMA.
  • Il controllo dell'intestazione dei dispositivi a blocchi crittografati LUKS è stato rafforzato ed è stata aggiunta la possibilità di creare immagini LUKS su macOS.
  • Il backend 9pfs, che consente l'utilizzo del file system di rete Plan 9 per accedere da una macchina virtuale all'altra, è passato all'utilizzo dell'hash GHashTable nella tabella degli identificatori, che in alcune situazioni ha portato ad un aumento delle prestazioni di 6-12 volte.
  • Aggiunti nuovi flussi e dgram dei backend netdev.
  • Il supporto FreeBSD è stato aggiunto all'agente per gli ospiti basati su ARM.
  • Le build GUI per macOS offrono la possibilità di includere interfacce basate su Cocoa e SDL/GTK in un unico file eseguibile.
  • Il sottomodulo integrato “slirp” è stato rimosso, si consiglia invece di utilizzare la libreria di sistema libslirp.
  • A causa della mancanza di capacità di test, il supporto per i sistemi host con processori MIPS a 32 bit che utilizzano l'ordine dei byte Big Endian è stato deprecato.

Fonte: opennet.ru

Aggiungi un commento