rilascio del progetto . Come emulatore, QEMU consente di eseguire un programma compilato per una piattaforma hardware su un sistema con un'architettura completamente diversa, ad esempio eseguire un'applicazione per ARM su un PC compatibile x86. In modalità di virtualizzazione, le prestazioni di esecuzione del codice in un ambiente isolato sono vicine a quelle di un sistema nativo grazie all'esecuzione diretta delle istruzioni sulla CPU e all'utilizzo dell'iper-visore Xen o del modulo KVM.
Il progetto è stato inizialmente creato da Fabrice Bellard con l'obiettivo di consentire l'esecuzione di file eseguibili Linux compilati per la piattaforma x86 su architetture diverse da x86. Nel corso degli anni sono state aggiunte funzionalità di emulazione completa per 14 architetture hardware, con il numero di dispositivi hardware emulati che ha superato 400. Per la versione 4.2 sono state apportate oltre 2200 modifiche da 198 sviluppatori.
Chiave , aggiunti in QEMU 4.2:
- Il generatore di codice TCG (Tiny Code Generator) ha implementato il supporto per plugin per il monitoraggio delle istruzioni del processore e degli indirizzi di memoria;
- Nel driver dei dispositivi a blocchi (Network Block Device) è stata garantita una gestione più efficiente delle richieste di copie durante la lettura (copy-on-read). Il codice del server NBD è stato ottimizzato per la copia di immagini sparse (con spazi vuoti). Sono stati apportati miglioramenti generali nell'implementazione del client e del server NBD;
- Migliorata la performance della crittografia dei dischi LUKS utilizzando l'algoritmo AES-XTS;
- In vfio-pci è stato aggiunto il supporto per la proprietà «failover_pair_id» per semplificare la migrazione dei dispositivi VFIO;
- In virtio-mmio è stato aggiunto il supporto per lo standard virtio-compatible 2 e per il meccanismo di code virtuali impacchettate definito nella specifica virtio 1.1 () per lo scambio di dati con un dispositivo virtuale di input/output in modalità batch;
- Nell'emulatore dell'architettura x86 è stato aggiunto un nuovo tipo di macchine emulabili «microvm», che utilizzano virtio-mmio invece di PCI per ottimizzare le prestazioni. È stata implementata la possibilità di abilitare e disabilitare VMX tramite i flag «-cpu». Aggiunto il supporto per l'emulazione delle estensioni AVX512 BFloat16. Garantito il supporto per i nuovi modelli di CPU Denverton (SoC server basato su Atom), Snowridge e Dhyana. Stabilizzato il supporto per il macOS Hypervisor Framework («-accel hvf»);
- Nell'emulatore dell'architettura ARM è stato aggiunto il supporto per l'emulazione del SoC Aspeed AST2600 («ast2600-evb»). Aggiunto il supporto per la tecnologia Semihosting 2.0 con estensioni STDOUT_STDERR/EXIT_EXTENDED, che consente al dispositivo emulato di utilizzare stdout, stderr e stdin per creare file sul lato host. In KVM è stata aggiunta la possibilità di utilizzare più di 256 CPU e garantito il supporto per le istruzioni SIMD SVE. Nelle macchine virtuali di tipo «» è stato implementato il supporto per l'aggiunta a caldo della memoria. Aumentata la performance dell'emulazione utilizzando il generatore di codice TCG.
- Nell'emulatore dell'architettura PowerPC è stata implementata la possibilità di emulare le istruzioni POWER9 mffsce, mffscrn e mffscrni. Nelle macchine emulabili «powernv» è stato aggiunto il supporto per i dispositivi di sistema Homer e OCC SRAM;
- Nell'emulatore dell'architettura RISC-V è stata aggiunta l'opzione «-initrd» e la possibilità di visualizzare lo stato completo dell'architettura nel debugger;
- Nell'emulatore dell'architettura s390 è stato implementato il supporto per le istruzioni IEP (Instruction Execution Protection);
- Nell'emulatore dell'architettura 68k è stata aggiunta la prima possibilità di emulare il Macintosh Quadro 800 e i sistemi classici NeXTcube;
- Nell'emulatore dell'architettura xtensa è stato aggiunto un nuovo tipo di macchine emulabili «virt» e implementato il supporto per ABI call0 per l'emulazione nello spazio utente.
Fonte: opennet.ru
