2026/08/09

Instrução Assembler mais lenta demora mais de 1 minuto a executar

No mundo da velocidade das instruções assember dos CPUs, um programador revela as instruções mais lentas de sempre.

Um programador e auto-proclamado hacker criou um projecto curioso para descobrir qual é a instrução x86 mais lenta de executar. Em vez de se focar na optimização do desempenho, Christopher Domas desenvolveu o projecto CPU Deoptimization, que mede o maior tempo de execução possível para uma única instrução (sob as piores condições possíveis) e publica os resultados no "ASM hall of shame" no GitHub.

A actual recordista é a instrução fxrstor64, que demorou cerca de 62 segundos(!), ou mais de 198 mil milhões de ciclos de relógio, a ser concluída. Para conseguir este resultado, Domas teve que utilizar técnicas criativas usando zonas de elevada latência no barramento PCIe e operações Memory-Mapped I/O (MMIO), forçando o processador a restaurar um bloco de memória de forma extremamente lenta.
O investigador acredita que este recorde poderá ser superado recorrendo às instruções AMX dos processadores Intel Sapphire Rapids, aumentando a quantidade de dados processados de 512 bytes para 8 KB. Nesse cenário, uma única instrução poderá ultrapassar 1 bilião de ciclos antes de terminar, demorando longos minutos.

No passado, Domas também já tinha lançado um curioso projecto movfuscator, um compilador que converte programas para código assembler que utiliza apenas instruções MOV - e que leva ao limite a habitual percepção de quem olha para código assembler e constata: mas isto só anda a transferir dados de um lado para o outro.

Sem comentários:

Enviar um comentário (problemas a comentar?)