projektudgivelse . Som emulator tillader QEMU at køre et program, der er bygget til en hardwareplatform, på et system med en helt anden arkitektur, for eksempel at køre en applikation til ARM på en x86-kompatibel PC. I virtualiseringsmode er ydelsen af kodeudførelse i et isoleret miljø tæt på den nativ system ved direkte udførelse af instruktioner på CPU'en og ved brug af hypervisoren Xen eller KVM-modulet.
Projektet blev oprindeligt oprettet af Fabrice Bellard med det formål at muliggøre kørsel af kompilerede Linux-executive filer til x86-platforme på arkitekturer, der er forskellige fra x86. I løbet af årene med udvikling er der blevet tilføjet fuld emulering af 14 hardwarearkitekturer, og antallet af emulerede hardwareenheder har overstiget 400. Til forberedelsen af version 4.0 er der blevet lavet mere end 3100 ændringer af 220 udviklere.
Nøglepunkter , tilføjet i QEMU 4.0:
- Emulatoren for ARM-arkitekturen har fået support for ARMv8+-instruktionsudvidelser: SB, PredInv, HPD, LOR, FHM, AA32HPD,
PAuth, JSConv, CondM, FRINT og BTI. Emulatoren understøtter nu også "Musca" og "MPS2" hardwareemulering. Emuleringen af ARM PMU (Power Management Unit) er forbedret. I platformen er det blevet muligt at bruge mere end 255 GB RAM og støtte for "noload" u-boot-abbildinger; - I x86-arkitekturens emulator er der i virtualiseringsaccelerationsmotoren (Intel Hardware Accelerated Execution) tilføjet support til POSIX-kompatible værter som Linux og NetBSD (tidligere var kun Darwin-platformen understøttet). I Q35-chipsetsimulatoren (ICH9) kan den maksimale hastighed (16GT/s) og antallet af forbindelseslinjer (x32), defineret i PCIe 4.0-specifikationer, nu angives for de vigtigste PCIe-porte (for at sikre kompatibilitet er QEMU som standard indstillet til 2.5GT/s og x1 for ældre maskiner). Mulighed for at indlæse Xen PVH-abildinger med "-kernel" indstillingen er blevet mulig;
- I MIPS-arkitekturens emulator er der tilføjet støtte til multitrådsemulering med brug af den klassiske kodegenerator TCG (Tiny Code Generator). Der er også tilføjet støtte til emulering af CPU I7200 (nanoMIPS32 ISA) og I6500 (MIPS64R6 ISA), mulighed for at behandle CPU-anmodninger ved hjælp af QMP (QEMU Management Protocol), og support til konfigurationsregistre SAARI og SAAR. Funktionaliteten af virtuelle maskiner af typen Fulong 2E er blevet forbedret. Implementeringen af Interthread Communication Unit er blevet opdateret;
- Emulatoren af PowerPC-arkitekturen har fået tilføjet støtte til emulering af afbrydelseskontroløren XIVE, udvidet støtte til POWER9, og P-serien har fået muligheden for varmt at tilslutte hoved-PCI-broer (PHB, PCI host bridge). Beskyttelse mod Spectre- og Meltdown-angreb er aktiveret som standard;
- I emulatoren af RISC-V-arkitekturen er der tilføjet støtte til emulering af PCI og USB. I den indbyggede debugging-server (gdbserver) er der implementeret støtte til at definere registerlister i XML-filer. Støtte til mstatus-felterne TSR, TW og TVM er også tilføjet;
- I emulatoren af s390-arkitekturen er der tilføjet støtte til CPU-modellen z14 GA 2, samt støtte til emulering af instruktioner til flydende decimaler og vektoroperationer. I vfio-ap er der tilføjet muligheden for varmt at tilslutte enheder;
- I emulatoren for Tensilica Xtensa-familien af processorer er der forbedret SMP-understøttelse for Linux og tilføjet støtte til FLIX-udvidelsen (Flexible length instructions extension);
- Den grafiske grænseflade har fået tilføjet muligheden '-display spice-app' for konfiguration og opstart af en variant af Spice-fjerntilgangs klient med et udseende, der ligner GTK-interface i QEMU;
- VNC-serverimplementeringen har fået tilføjet støtte til adgangskontrol ved hjælp af options tls-authz/sasl-authz;
- I QMP (QEMU Management Protocol) er der tilføjet støtte til centraliseret/ekstern (Out-of-band) udførelse af kommandoer og implementeret yderligere kommandoer til arbejde med blokenheder;
- I VFIO er implementeringen af EDID-interfacet til understøttede mdev (Intel vGPU) tilføjet, hvilket muliggør ændring af skærmopløsningen ved hjælp af xres- og yres-indstillinger;
- For Xen er der tilføjet en ny enhed 'xen-disk', som automatisk kan oprette en disk-backend for Xen PV (uden at skulle henvise til xenstore). Ydelsen af disk-backenden i Xen PV er forbedret, og muligheden for at ændre diskstørrelsen er tilføjet;
- I netværksblok-enhederne er diagnosticerings- og sporingsmulighederne blevet udvidet, og klientens kompatibilitet med problematiske NBD-serverimplementeringer er forbedret. I qemu-nbd er der tilføjet mulighederne '—bitmap', '—list' og '—tls-authz';
- Til den emulerede IDE/via-enhed er der tilføjet støtte til PCI IDE-tilstand;
- Der er tilføjet support til brug af lzfse-algoritmen til komprimering af dmg-billedfiler. For qcow2-formatet er der tilføjet støtte til tilslutning af eksterne filer med data. Qcow2-dekomprimeringsoperationer er flyttet til en separat tråd. I vmdk-billeder er der tilføjet støtte til operationen 'blockdev-create';
- Der blockenhed virtio-blk har fået tilføjet understøttelse af DISCARD-operationer (underretning om frigivelse af blokke) og WRITE_ZEROES (nulstilling af en række logiske blokke);
- I pvrdma-enheden er der implementeret støtte til RDMA Management Datagram services (MAD);
- ændringer , der bryder bagudkompatibiliteten. For eksempel bør man i stedet for "handle" i "-fsdev" og "-virtfs" bruge mulighederne "local" eller "proxy". Indstillinger som "-virtioconsole" (udskiftet med "-device virtconsole"), "-no-frame", "-clock", "-enable-hax" (udskiftet med "-accel hax") er fjernet. Enheden "ivshmem" er fjernet (brug "ivshmem-doorbell" eller "ivshmem-plain"). Understøttelsen af SDL1.2 bygning er ophørt (man skal bruge SDL2).
Kilde: opennet.ru
