На днях был представлен новый релиз QEMU, QEMU 8.1. Он дает возможность запускать софт, написанный, например, под ARM, на ПК с x86. При этом производительность эмулятора почти такая же, как при запуске такого ПО на «родной» архитектуре. Этого удается добиться за счет выполнения прямого инструкций на CPU и использования возможностей гипервизора Xen или модуля KVM. Что разработчики изменили в новой версии?

Одно из ключевых нововведениий — новые возможности в модулях virtio. Добавлена, например, поддержка асимметричного шифрования. А еще — эмуляция зонированных устройств. В virtio‑mem добавлена поддержка горячего отключения устройств и миграции в режиме «x‑ignore‑shared». Добавлено новое устройство vhost‑user для VIRTIO SCMI.

В эмуляторах архитектур ARM, PowerPC и RISC‑V реализовано использование инструкций для ускорения шифрования AES, предоставляемых процессором хост‑системы.

Появился мультитач, речь идет, конечно, о графическом интерфейсе.

В эмуляторе x86 появилась поддержка процессоров Intel Xeon на базе микроархитектуры Granite Rapids. По умолчанию задействованы структуры в формате SMBIOS 3.0.

Для архитектуры ARM добавлена поддержка относительно новой платы Banana Pi BPI‑M2 Ultra (bpim2u) и CPU Cortex Neoverse‑V1 (neoverse‑v1). Добавлена поддержка процессорных расширений FEAT_PAN3 (SCTLR_ELx.EPAN), FEAT_LSE2 (Large System Extensions v2) и FEAT_RME (Realm Management Extensions).

Для эмуляторов архитектур ARM, PowerPC и RISC‑V реализовано использование инструкций для ускорения шифрования AES, предоставляемых процессором хост‑системы.

В эмуляторе архитектуры RISC‑V добавлена поддержка CPU Veyron V1, а также наборов процессорных инструкций (ISA) BF16 (Zfbfmin/Zvfbfmin/Zvfbfwma) и Zfa. Реализована возможность дизассемблирования инструкций Zcm*, Z*inx,XVentanaCondOps и Xthead. Улучшена поддержка гипервизора KVM.

В эмуляторе архитектуры MIPS реализована поддержка процессоров Ingenic XBurstR1 и XBurstR2, а также процессорных инструкций MXU.

В классическом генераторе кода TCG для архитектуры PowerPC добавлена поддержка SMT (Simultaneous multithreading), позволяющая на системах pseries и powernv выполнять до 8 потоков на каждом процессорном ядре.

В эмуляторе архитектуры PowerPC добавлена поддержка эмуляции модели CPU Power9 DD2.2, а также реализована возможность профилирования CPU POWER.

Для эмулятора процессоров Qualcomm Hexagon добавлена поддержка инструкций v68/v73 scalar и v68/v69 HVX. Для HVX реализована поддержка gdbstub для удалённой отладки в GDB.

Еще одно нововведение касается архитектуры s390. Здесь решены проблемы при эмуляции инструкций LDER, LCBB, LOCFHR, MXDB, MXDBR, EPSW, MDEB, MDEBR, MVCRL, LRA, CKSM, CLM, ICM, MC, STIDP, EXECUTE и CLGEBR(A).

Что касается эмулятора Tricore, то здесь добавлена поддержка процессоров TC37x, использующих версию 1.6.2 набора процессорных инструкций. Добавлена поддержка эмуляции инструкций POPCNT.W, LHA, CRC32L.W, CRC32.B, SHUFFLE, SYSCALL и DISABLE.

Наконец, для шины PCIe предложены новые команды QMP (QEMU Machine Protocol) для подстановки событий, связанных с CXL (Compute Express Link), DRAM и модулями памяти.

Комментарии (2)


  1. ABy
    25.08.2023 11:30
    +4

    Этого удается добиться за счет выполнения прямого инструкций на CPU

    Лучше так:

    За счет выполнения прямого инструкций на CPU этого добиться удается


    1. jcmvbkbc
      25.08.2023 11:30
      +1

      Лучше так:

      Ещё лучше так:

      При этом производительность ПО запущенного в эмуляторе примерно в 10 раз ниже, по сравнению с производительностью при запуске такого ПО на «родной» архитектуре

      Потому что "использование возможностей … модуля KVM" и "запускать софт, написанный, например, под ARM, на ПК с x86" -- это два взаимоисключающих сценария.