Представен е релиз на проекта QEMU 7.2. Като емулатор, QEMU позволява стартиране на програма, компилирана за една хардуерна платформа, на система с напълно различна архитектура, например, изпълнение на приложение за ARM на x86-съвместим компютър. В режима на виртуализация, производителността на изпълнението на кода в изолирана среда е близка до хардуерната система благодарение на директното изпълнение на инструкции на CPU и използването на хипервизора Xen или модула KVM.
Първоначално проектът е създаден от Фабрис Беллар (Fabrice Bellard) с цел осигуряване на възможност за стартиране на изпълними файлове на Linux, компилирани за x86 платформа, на архитектури, различни от x86. През годините на разработка е добавена поддръжка за пълна емулация на 14 хардуерни архитектури, а броят на емулираните хардуерни устройства е надхвърлил 400. При подготовката на версия 7.2 са направени над 1800 промени от 205 разработчици.
Ключови подобрения, добавени в QEMU 7.2:
- В емулатора на архитектура x86 в класическия генератор на код TCG е добавена поддръжка за инструкции AVX, AVX2, F16C, FMA3 и VAES, както и е проведена оптимизация на производителността, свързана с използването на инструкции SSE. За KVM добавена е поддръжка на механизма за проследяване на излизане от виртуалната машина („notify vmexit“), който позволява заобикаляне на грешки в CPU, които могат да доведат до замръзване.
- В емулатора ARM е реализирана поддръжка на CPU Cortex-A35 и процесорни разширения ETS (Enhanced Translation Synchronization), PMUv3p5 (PMU Extensions 3.5), GTG (Guest Translation Granule 4KB, 16KB, 64KB), HAFDBS (хардуерно управление на флага за достъп и състоянието „dirty“) и E0PD (предотвратяване на достъп EL0 до разделени адресни карти).
- В емулатора LoongArch е добавена поддръжка на fw_cfg DMA, горещо свързване на памет и емулция на устройства TPM (Trusted Platform Module).
- В емулатора на архитектура OpenRISC е реализирана платформа ‘virt’ за провеждане на тестове на устройства и използване в системи за непрекъсната интеграция. Реализирана е поддръжка за многопоточна работа на класическия генератор на код TCG (Tiny Code Generator).
- В емулатора на архитектура RISC-V в емулираните машини ‘virt’ е реализирана възможност за зареждане на фърмуер от pflash в S-режим (S-mode). Подобрена е работата с device tree.
- В емулатора на архитектура 390x е осигурена поддръжка на разширението MSA5 (Message-Security-Assist Extension 5 с инструкция PRNO за генериране на псевдослучайни числа), инструкциите KIMD/KLM (реализация на SHA-512) и разширена интерпретация на zPCI за хост системи на базата на хипервизора KVM.
- В бекендите за работа с паметта е осигурено предварително разпределение на паметта с оглед на архитектурата NUMA.
- Подсилена е проверката на заглавията на криптирани блочни устройства LUKS, добавена е възможност за създаване на образи LUKS в macOS.
- В бекенда 9pfs, позволяващ използването на мрежовата файлова система Plan 9 за достъп на една виртуална машина до друга, е извършен преход към използване на хеш GHashTable в таблицата на идентификаторите, което в някои ситуации доведе до увеличаване на производителността от 6 до 12 пъти.
- Добавени са нови netdev бекенди stream и dgram.
- В агента за хост системи на базата на архитектура ARM е добавена поддръжка за FreeBSD.
- В GUI сборките за macOS е осигурена възможност за включване в един изпълним файл на интерфейсите на база Cocoa и SDL/GTK.
- Премахнат е вграденният подмодул „slirp“, вместо който се препоръчва да се използва системната библиотека libslirp.
- Поради липсата на възможност за тестване, поддръжката на хост системи с 32-битови процесори MIPS, използващи реда на байтовете „Big endian“, е обявена за остаряла.
Източник: opennet.ru
