lançamento do projeto . Como emulador, o QEMU permite executar um programa compilado para uma plataforma de hardware em um sistema com uma arquitetura completamente diferente, por exemplo, executar um aplicativo para ARM em um PC compatível com x86. No modo de virtualização, o desempenho da execução do código em um ambiente isolado é próximo ao de um sistema nativo, graças à execução direta de instruções na CPU e ao uso do hipervisor Xen ou do módulo KVM.
Originalmente, o projeto foi criado por Fabrice Bellard com o objetivo de permitir a execução de arquivos executáveis Linux compilados para a plataforma x86 em arquiteturas diferentes de x86. Ao longo dos anos de desenvolvimento, o suporte completo foi adicionado para 14 arquiteturas de hardware, e o número de dispositivos de hardware emulados ultrapassou 400. Na preparação da versão 4.1, mais de 2000 alterações foram feitas por 276 desenvolvedores.
Principais , adicionadas no QEMU 4.1:
- O emulador da arquitetura x86 agora suporta os modelos de CPU Hygon Dhyana e Intel SnowRidge. A emulação da extensão RDRAND (gerador de números aleatórios de hardware) foi adicionada. Foram incorporadas as flags
md-clear e mds-no para gerenciar a proteção contra ataques (Microarchitectural Data Sampling) em processadores Intel. Foi adicionada a capacidade de identificar topologias de circuitos integrados usando a flag "-smp …, dies=". O versionamento foi implementado para todos os modelos de CPU x86; - O driver de bloco SSH foi transferido para o uso para ;
- No driver virtio-gpu (GPU virtual, desenvolvido no âmbito do projeto ) foi adicionada a capacidade de deslocar operações de renderização 2D/3D para o processo externo vhost-user (por exemplo, vhost-user-gpu);
- No emulador da arquitetura ARM, foi adicionada a suporte para a extensão ARMv8.5-RNG para a geração de números aleatórios. A emulação de FPU para chips da família Cortex-M foi implementada e problemas com a emulação de FPU para Cortex-R5F foram solucionados. Um novo sistema de configuração de opções de compilação foi proposto, apresentado no estilo Kconfig. Para o SoC Exynos4210, foi adicionada a suporte a controladores DMA PL330;
- No emulador da arquitetura MIPS, o suporte para instruções MSA ASE foi melhorado ao usar a ordem de bytes big-endian e o tratamento de casos de divisão por zero foi alinhado ao hardware de referência. O desempenho da emulação de instruções MSA para cálculos inteiros e operações de permutação foi aumentado;
- No emulador da arquitetura PowerPC, o suporte para passar dados para a GPU NVIDIA V100/NVLink2 por meio do VFIO foi adicionado. A aceleração da emulação do controlador de interrupções XIVE foi implementada para pseries, juntamente com suporte para conexão a quente de pontes PCI. Foram realizadas otimizações na emulação de instruções vetoriais (Altivec/VSX);
- No emulador da arquitetura RISC-V, foi adicionada um novo modelo de hardware — "spike". Suporte para ISA 1.11.0 foi incluído. Melhorias no ABI de chamadas de sistema de 32 bits, aumento no processamento de instruções inválidas e aprimoramento do depurador integrado. Suporte adicionado para topologia de CPU na árvore de dispositivos;
- No emulador da arquitetura s390, foi adicionado suporte para a emulação de todas as instruções vetoriais do grupo "Vector Facility" e elementos adicionais para suporte a sistemas gen15 (incluindo suporte para AP Queue Interruption Facility para vfio-ap). Foi implementado suporte para BIOS para inicialização a partir de ECKD DASD, vinculado ao sistema convidado via vfio-ccw;
- No emulador da arquitetura SPARC para sistemas sun4m, foram resolvidos problemas com o uso da flag "-vga none" para OpenBIOS;
- No emulador de processadores da família Tensilica Xtensa, foram implementadas opções para MPU (unidade de proteção de memória) e acesso exclusivo;
- No comando "qemu-img convert", foi adicionada a opção "—salvage" para desativar a finalização inesperada do processo de conversão de imagem em caso de erros de entrada/saída (por exemplo, pode ser aplicada para recuperar arquivos qcow2 parcialmente corrompidos). No comando
"qemu-img rebase" assegurou o funcionamento quando um arquivo base ainda não foi criado para o arquivo de entrada; - Adicionada a capacidade de redirecionar a saída, organizada com tecnologia "semihosting" (permite que o dispositivo emulado use stdout, stderr e stdin para criar arquivos do lado do host), para o backend chardev ("-semihosting-config enable=on,target=native,chardev=[ID]");
- No driver de bloco VMDK, foi adicionado suporte para o subformato seSparse em modo somente leitura;
- No driver de emulação GPIO, foi adicionado suporte para o controlador GPIO SiFive.
Fonte: opennet.ru
