A Busca pela Instrução x86 Mais Lenta

Pesquisador de hardware cria um ‘Salão da Vergonha’ da desotimização da CPU, revelando o comando que levou 62 segundos para ser executado.

Projeto Inovador de Desotimização de CPUs

Enquanto a indústria busca incessantemente por CPUs mais rápidas, o pesquisador de hardware Christopher Domas (@xoreaxeaxeax) inverteu a lógica com seu projeto ‘CPU Deoptimization’. O objetivo é encontrar as instruções x86 mais lentas possíveis, criando um ‘Salão da Vergonha’ da lentidão.

O Recordista: fxrstor64

A instrução que conquistou o topo do pódio da lentidão é a fxrstor64. Ela levou impressionantes 62 segundos, ou mais de 198 bilhões de ciclos, para ser concluída. Esta instrução é responsável por restaurar o estado dos registradores SIMD em uma localização de memória de 512 bytes.

Como Atingir a Lerdeza Extrema

Domas utilizou técnicas engenhosas para maximizar a latência da fxrstor64:

  • Identificou uma área de alta latência na estrutura interna do PCIe usando a ferramenta `mmiotic`.
  • Forçou a CPU a carregar um estado de 512 bytes de MMIO (Memory-Mapped I/O), resultando em 23 segundos (74 bilhões de ciclos).
  • Posteriormente, ‘privou a estrutura’ realizando várias leituras de 4 bytes de outro registro MMIO de alta latência, congestionando o complexo raiz PCIe e forçando a restauração de estado a ficar na fila.

Próximos Passos e Futuras ‘Lentidões’

O pesquisador planeja explorar as instruções AMX dos processadores Intel Sapphire Rapids com xrstore64. Com uma área de estado aumentada de 512 bytes para 8KB, a expectativa é que a execução possa ultrapassar 1 trilhão de ciclos.

Regras do Jogo da Lentidão

O leaderboard x86 já está disponível no GitHub, e Domas planeja expandir para ARM e RISC-V. Algumas regras para as medições incluem:

  • Apenas a execução de uma única instrução é pontuada.
  • Instruções interrompíveis não são permitidas.
  • Não é permitido pontuar instruções emuladas.
  • Todos os tempos são normalizados pela frequência base da CPU, sem modificações de hardware.

CPU e Casos Específicos

Os testes foram realizados principalmente em CPUs Intel Core i7-8559U e AMD Ryzen 7 5800H. Para a instrução rdmsr, um chip VIA Eden (do início dos anos 2000) foi utilizado. Este chip possui um registro indocumentado (0x133) que proporcionou um tempo de resposta excepcionalmente alto: 202 microssegundos ou 161.602 ciclos.

Outros Projetos Curiosos

Este não é o primeiro experimento de Domas. Um projeto anterior, chamado `movfuscator`, é um compilador C que utiliza exclusivamente o comando `mov` (mover).

Baseado no artigo de Tom’s Hardware