version du projet . En tant qu'émulateur, QEMU permet d'exécuter un programme compilé pour une plateforme matérielle sur un système avec une architecture complètement différente, par exemple, d'exécuter une application pour ARM sur un PC compatible x86. En mode de virtualisation, la performance d'exécution du code dans un environnement isolé est proche de celle d'un système natif grâce à l'exécution directe des instructions sur le CPU et à l'utilisation de l'hyperviseur Xen ou du module KVM.
Le projet a été initialement créé par Fabrice Bellard dans le but de permettre l'exécution de fichiers exécutables Linux compilés pour la plateforme x86 sur des architectures autres que x86. Au fil des ans, le développement a ajouté un support pour une émulation complète de 14 architectures matérielles, et plus de 400 périphériques matériels ont été émulés. Pour la version 4.1, plus de 2000 modifications ont été apportées par 276 développeurs.
Améliorations clés , ajoutées dans QEMU 4.1 :
- Le simulateur d'architecture x86 a ajouté le support des modèles de CPU Hygon Dhyana et Intel SnowRidge. L'émulation de l'extension RDRAND (générateur matériel de nombres pseudo-aléatoires) a été ajoutée. Des drapeaux
md-clear et mds-no pour gérer la protection contre les attaques (Microarchitectural Data Sampling) sur les processeurs Intel. Il est désormais possible de définir des topologies de circuits intégrés à l'aide du drapeau « -smp …, dies= ». La version a été implémentée pour tous les modèles de CPU x86 ; - Le pilote de bloc SSH a été converti de l'utilisation de sur ;
- Dans le pilote virtio-gpu (GPU virtuel développé dans le cadre du projet ) le support pour l'exécution des opérations de rendu 2D/3D a été ajouté dans un processus externe vhost-user (par exemple, vhost-user-gpu);
- Le simulateur d'architecture ARM a ajouté le support de l'extension ARMv8.5-RNG pour la génération de nombres pseudo-aléatoires. Le support de l'émulation FPU pour les puces de la famille Cortex-M a été réalisé et des problèmes d'émulation FPU pour Cortex-R5F ont été résolus. Un nouveau système de configuration des options de compilation a été proposé, structuré dans le style Kconfig. Pour le SoC Exynos4210, le support des contrôleurs DMA PL330 a été ajouté ;
- Dans le simulateur d'architecture MIPS, le support des instructions MSA ASE a été amélioré avec l'utilisation de l'ordre des octets big-endian et le traitement des cas de division par zéro a été aligné sur le matériel de référence. La performance de l'émulation des instructions MSA pour les calculs entiers et les opérations de permutation a été augmentée ;
- Dans le simulateur d'architecture PowerPC, le support du passage à GPU NVIDIA V100/NVLink2 via VFIO a été ajouté. Pour pseries, l'accélération de l'émulation du contrôleur d'interruption XIVE a été mise en œuvre et le support du branchement à chaud des ponts PCI a été ajouté. Des optimisations ont été apportées à l'émulation des instructions vectorielles (Altivec/VSX);
- Une nouvelle modèle de matériel — «spike» a été ajoutée à l'émulateur d'architecture RISC-V. Le support de l'ISA 1.11.0 a été ajouté. L'ABI des appels système 32 bits a été amélioré, le traitement des instructions non valides a été étendu et le débogueur intégré a été amélioré. Le support de la topologie CPU dans l'arborescence des dispositifs a été ajouté;
- L'émulateur d'architecture s390 prend en charge l'émulation de toutes les instructions vectorielles du groupe «Vector Facility» et des éléments supplémentaires ont été ajoutés pour le support des systèmes gen15 (y compris le support de l'AP Queue Interruption Facility pour vfio-ap). Le support du BIOS pour le démarrage avec ECKD DASD, relié au système invité via vfio-ccw, a été implémenté;
- Dans l'émulateur d'architecture SPARC pour les systèmes sun4m, des problèmes avec l'utilisation du drapeau «-vga none» pour OpenBIOS ont été résolus;
- Des options pour MPU (unité de protection de la mémoire) et d'accès exclusif ont été mises en œuvre dans l'émulateur des processeurs de la famille Tensilica Xtensa;
- Une option «—salvage» a été ajoutée à la commande «qemu-img convert» pour désactiver l'arrêt d'urgence du processus de conversion d'image en cas d'erreurs d'entrée/sortie (par exemple, cela peut être utilisé pour récupérer des fichiers qcow2 partiellement corrompus). Dans la commande
«qemu-img rebase» fonctionne lorsque le fichier d'entrée n'a pas encore de fichier de base (backing) créé; - La possibilité de rediriger la sortie organisée à l'aide de la technologie «semihosting» (permet à l'appareil émulé d'utiliser stdout, stderr et stdin pour créer des fichiers côté hôte) vers le backend chardev («-semihosting-config enable=on,target=native,chardev=[ID]») a été ajoutée;
- Le pilote bloc VMDK a ajouté le support du sous-format seSparse en lecture seule;
- Dans le pilote d'émulation GPIO, le support du contrôleur GPIO SiFive a été ajouté.
Source : opennet.ru
