lanzamiento del proyecto . Como emulador, QEMU permite ejecutar un programa diseñado para una plataforma de 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 ejecución de código en un entorno aislado se acerca al de un sistema nativo gracias a la ejecución directa de instrucciones en la CPU y la utilización del hipervisor Xen o el módulo KVM.
Inicialmente, el proyecto fue creado por Fabrice Bellard con el objetivo de permitir la ejecución de archivos ejecutables de Linux compilados para la plataforma x86 en arquitecturas diferentes de x86. A lo largo de los años de desarrollo, se ha añadido soporte para la emulación completa de 14 arquitecturas de hardware, y el número de dispositivos de hardware emulados ha superado los 400. En la preparación de la versión 4.1, se realizaron más de 2000 cambios por parte de 276 desarrolladores.
Mejoras clave , añadidos en QEMU 4.1:
- En el emulador de la arquitectura x86 se ha añadido soporte para modelos de CPU Hygon Dhyana e Intel SnowRidge. Se ha añadido emulación de la extensión RDRAND (generador de números pseudoaleatorios de hardware). Se añadieron las flags
md-clear y mds-no para gestionar la protección contra ataques (Microarchitectural Data Sampling) en procesadores Intel. Se ha añadido la capacidad de determinar topologías de circuitos integrados usando la flag '-smp …,dies='. Se implementó versionado para todos los modelos de CPU x86; - El controlador de bloques SSH se ha trasladado del uso de en ;
- . En el controlador virtio-gpu (GPU virtual, desarrollado en el marco del proyecto ) se ha añadido soporte para desviar operaciones de renderizado 2D/3D a un proceso externo vhost-user (por ejemplo, vhost-user-gpu);
- En el emulador de la arquitectura ARM se ha añadido soporte para la extensión ARMv8.5-RNG para la generación de números pseudoaleatorios. Se implementó soporte para la emulación FPU para chips de la familia Cortex-M y se resolvieron problemas con la emulación FPU para Cortex-R5F. Se propuso un nuevo sistema de configuración de opciones de compilación, diseñado al estilo Kconfig. Para SoC Exynos4210 se ha añadido soporte para controladores DMA PL330;
- En el emulador de la arquitectura MIPS se ha mejorado el soporte para instrucciones MSA ASE al utilizar el orden de bytes big-endian y se ha alineado el manejo de casos de división por cero con el hardware de referencia. Se ha aumentado el rendimiento de la emulación de instrucciones MSA para cálculos enteros y operaciones de permutación;
- En el emulador de la arquitectura PowerPC se ha añadido soporte para la redirección a la GPU NVIDIA V100/NVLink2 mediante VFIO. Para pseries se ha implementado la aceleración de la emulación del controlador de interrupciones XIVE y se ha añadido soporte para la conexión en caliente de puentes PCI. Se realizaron optimizaciones en la emulación de instrucciones vectoriales (Altivec/VSX);
- Se ha añadido un nuevo modelo de hardware "spike" al emulador de arquitectura RISC-V. Se ha implementado el soporte para ISA 1.11.0. Se ha mejorado el ABI de llamadas del sistema de 32 bits, ampliado el manejo de instrucciones no válidas y mejorado el depurador integrado. Se ha añadido soporte para la topología de CPU en el árbol de dispositivos;
- En el emulador de arquitectura s390 se ha añadido soporte para la emulación de todas las instrucciones vectoriales del grupo "Vector Facility" y se han incorporado elementos adicionales para soportar sistemas gen15 (incluido el soporte para AP Queue Interruption Facility para vfio-ap). Se ha implementado soporte para BIOS para el arranque desde ECKD DASD, vinculado al sistema huésped a través de vfio-ccw;
- En el emulador de arquitectura SPARC para sistemas sun4m se han solucionado problemas al utilizar la opción "-vga none" para OpenBIOS;
- En el emulador de procesadores de la familia Tensilica Xtensa se han implementado opciones para MPU (unidad de protección de memoria) y acceso exclusivo;
- Se ha añadido la opción "—salvage" al comando "qemu-img convert" para deshabilitar el cierre inesperado del proceso de conversión de imagen en caso de errores de entrada/salida (por ejemplo, se puede utilizar para recuperar archivos qcow2 parcialmente dañados). En el comando
"qemu-img rebase" se garantiza el funcionamiento cuando aún no se ha creado un archivo base (backing) para el archivo de entrada; - Se ha añadido la posibilidad de redirigir la salida organizada utilizando la tecnología "semihosting" (que permite al dispositivo emulado usar stdout, stderr e stdin para crear archivos en el lado del host) al backend chardev ("-semihosting-config enable=on,target=native,chardev=[ID]");
- En el controlador de bloques VMDK se ha añadido soporte para el subformato seSparse en modo de solo lectura;
- En el controlador de emulación GPIO se ha añadido soporte para el controlador GPIO de SiFive.
Fuente: opennet.ru
