Se ha presentado la versión del proyecto QEMU 7.2. Como emulador, QEMU permite ejecutar programas compilados para una plataforma hardware en un sistema con una arquitectura completamente diferente, por ejemplo, ejecutar una aplicación para ARM en un PC compatible con x86. En modo de virtualización, el rendimiento de la ejecución del código en un entorno aislado es cercano al sistema físico gracias a la ejecución directa de instrucciones en la CPU y al uso del hipervisor Xen o el módulo KVM.
El proyecto fue creado originalmente por Fabrice Bellard con el objetivo de permitir la ejecución de archivos ejecutables de Linux compilados para la plataforma x86 en arquitecturas diferentes a x86. A lo largo de los años de desarrollo, se ha añadido soporte para la emulación completa de 14 arquitecturas hardware, y el número de dispositivos hardware emulados ha superado los 400. En la preparación de la versión 7.2, se incorporaron más de 1800 cambios de 205 desarrolladores.
Mejoras clave añadidas en QEMU 7.2:
- En el emulador de la arquitectura x86, se ha añadido soporte para instrucciones AVX, AVX2, F16C, FMA3 y VAES en el generador de código clásico TCG, así como se ha realizado una optimización del rendimiento relacionada con el uso de instrucciones SSE. Para KVM se ha añadido soporte para el mecanismo de seguimiento de salida de la máquina virtual ('notify vmexit'), que permite sortear errores en la CPU que pueden llevar a bloqueos.
- En el emulador de ARM, se ha implementado soporte para la CPU Cortex-A35 y las extensiones de procesador ETS (Enhanced Translation Synchronization), PMUv3p5 (PMU Extensions 3.5), GTG (Guest Translation Granule 4KB, 16KB, 64KB), HAFDBS (control hardware de la bandera de acceso y estado 'dirty') y E0PD (prevención del acceso EL0 a los mapas de direcciones compartidos).
- En el emulador de LoongArch, se ha añadido soporte para fw_cfg DMA, conexión hot-plug de memoria y emulación de dispositivos TPM (Trusted Platform Module).
- En el emulador de la arquitectura OpenRISC, se ha implementado la plataforma ‘virt’ para realizar pruebas de dispositivos y su uso en sistemas de integración continua. Se ha implementado soporte para la ejecución multihilo del generador de código clásico TCG (Tiny Code Generator).
- En el emulador de la arquitectura RISC-V, en las máquinas emuladas ‘virt’, se ha implementado la posibilidad de cargar firmware desde pflash en modo S (S-mode). Se ha mejorado la gestión del árbol de dispositivos.
- En el emulador de arquitectura 390x se ha asegurado el soporte para la extensión MSA5 (Message-Security-Assist Extension 5 con la instrucción PRNO para la generación de números pseudoaleatorios), así como para las instrucciones KIMD/KLM (implementación de SHA-512) y la interpretación avanzada de zPCI para sistemas invitados basados en el hipervisor KVM.
- En los backends para el manejo de memoria se ha implementado la asignación anticipada de memoria considerando la arquitectura NUMA.
- Se ha reforzado la verificación de los encabezados de los dispositivos de bloques cifrados LUKS, y se ha añadido la posibilidad de crear imágenes LUKS en macOS.
- En el backend 9pfs, que permite el uso del sistema de archivos de red Plan 9 para el acceso de una máquina virtual a otra, se ha realizado un cambio al uso del hash GHashTable en la tabla de identificadores, lo que ha provocado en algunas situaciones un aumento del rendimiento de entre 6 y 12 veces.
- Se han añadido nuevos backends netdev stream y dgram.
- En el agente para sistemas invitados basados en la arquitectura ARM, se ha añadido soporte para FreeBSD.
- En las compilaciones de GUI para macOS se ha habilitado la posibilidad de incluir en un solo archivo ejecutable interfaces basadas en Cocoa y SDL/GTK.
- Se ha eliminado el submódulo incorporado 'slirp', en su lugar se recomienda utilizar la biblioteca del sistema libslirp.
- Debido a la falta de capacidad de pruebas, se ha declarado obsoleto el soporte para sistemas anfitriones con procesadores MIPS de 32 bits que utilizan el orden de bytes 'Big endian'.
Fuente: opennet.ru
