De release van het QEMU 7.2-project is aangekondigd. Als emulator stelt QEMU in staat om programma's die zijn samengesteld voor een bepaalde hardware platform uit te voeren op een systeem met een volledig andere architectuur, bijvoorbeeld het uitvoeren van een applicatie voor ARM op een x86-compatibele pc. In de virtualisatie-modus is de prestaties van de code-uitvoering in een geïsoleerde omgeving bijna gelijk aan die van een hardware systeem dankzij de directe uitvoering van instructies op de CPU en het gebruik van de hypervisor Xen of de KVM-module.
Het project is oorspronkelijk opgericht door Fabrice Bellard met als doel het mogelijk maken om Linux-uitvoerbare bestanden, die zijn samengesteld voor het x86-platform, uit te voeren op architecturen die verschillen van x86. In de loop der jaren zijn er ondersteuning en volledige emulatie toegevoegd voor 14 hardware-architecturen en is het aantal geëmuleerde hardwareapparaten tot meer dan 400 gestegen. Voor versie 7.2 zijn er meer dan 1800 wijzigingen door 205 ontwikkelaars aangebracht.
Belangrijkste verbeteringen toegevoegd in QEMU 7.2:
- In de x86-emulator is ondersteuning voor de instructies AVX, AVX2, F16C, FMA3 en VAES toegevoegd in de klassieke code-generator TCG, evenals optimalisatie van de prestaties met betrekking tot het gebruik van SSE-instructies. Voor KVM is ondersteuning toegevoegd voor het mechanisme voor het volgen van vm-uitgang ('notify vmexit'), waarmee CPU-fouten die kunnen leiden tot vastlopen kunnen worden omzeild.
- In de ARM-emulator is ondersteuning geïmplementeerd voor de CPU Cortex-A35 en processoruitbreidingen ETS (Enhanced Translation Synchronization), PMUv3p5 (PMU Extensions 3.5), GTG (Guest Translation Granule 4KB, 16KB, 64KB), HAFDBS (hardwarebeheer van toegangsvlag en 'dirty' status) en E0PD (het voorkomen van toegang EL0 tot gesplitste adreskaarten).
- In de LoongArch-emulator is ondersteuning toegevoegd voor fw_cfg DMA, hot-plugging van geheugen en emulatie van TPM (Trusted Platform Module) apparaten.
- In de OpenRISC-emulator is het platform ‘virt’ geïmplementeerd voor apparaattests en voor gebruik in continuous integration-systemen. Ondersteuning voor multi-threaded uitvoering van de klassieke TCG-code-generator (Tiny Code Generator) is geïmplementeerd.
- In de RISC-V-emulator is het mogelijk gemaakt om firmware te laden vanuit pflash in S-mode op de ‘virt’ geëmuleerde machines. De werking met de device tree is verbeterd.
- In de 390x architectuur emulator is ondersteuning voor de MSA5-extensie (Message-Security-Assist Extension 5 met de PRNO-instructie voor het genereren van pseudo-willekeurige getallen), KIMD/KLM-instructies (implementatie van SHA-512) en uitgebreide zPCI-interpretatie voor gastsystemen gebaseerd op de KVM-hypervisor gegarandeerd.
- In de backends voor geheugentoegang is er een voorafgaande toewijzing van geheugen rekening houdend met de NUMA-architectuur.
- De controle op de kopteksten van versleutelde blokapparaten LUKS is verbeterd, met de mogelijkheid om LUKS-images te maken in macOS.
- In de 9pfs backend, die een netwerk-bestandssysteem Plan 9 gebruikt voor toegang van de ene virtuele machine tot de andere, is overgestapt op het gebruik van de GHashTable-hash in de identificatietabel, wat in sommige gevallen heeft geleid tot een prestatieverbetering van 6-12 keer.
- Nieuwe netdev-backends stream en dgram zijn toegevoegd.
- In de agent voor gastsystemen gebaseerd op de ARM-architectuur is ondersteuning voor FreeBSD toegevoegd.
- In de GUI-builds voor macOS is de mogelijkheid toegevoegd om interfaces op basis van Cocoa en SDL/GTK in één uitvoerbaar bestand op te nemen.
- De ingebouwde submodule 'slirp' is verwijderd, waarbij het gebruik van de systeembibliotheek libslirp wordt aanbevolen.
- Vanwege het ontbreken van testmogelijkheden is de ondersteuning voor hostsystemen met 32-bits MIPS-processors, die de byte-order 'Big endian' gebruiken, als verouderd verklaard.
Bron: opennet.ru
