Los números flotantes subnormales son lentos en procesadores Intel

Fuentes: Subnormal floating-point numbers are expensive… on Intel processors

Los números de punto flotante subnormales, definidos por el estándar IEEE para valores muy pequeños, presentan un coste de rendimiento significativo en procesadores Intel. Un análisis técnico realizado por Daniel Lemire demuestra que estas operaciones pueden ralentizar las computaciones hasta 45 veces más que las operaciones con números normales en arquitecturas de Intel, mientras que en procesadores AMD y ARM el impacto es mínimo o nulo.

El estudio, basado en benchmarks en C++ con arrays de 16.384 valores, compara el rendimiento de cinco procesadores: Intel Xeon 6975P-C (Granite Rapids), Intel Xeon Gold 6548N (Emerald Rapids), AMD EPYC 9R45 (Zen 5), AWS Graviton 5 (Arm Neoverse V3) y Apple M4 Max. Los resultados muestran que en los procesadores Intel, una multiplicación con un número subnormal tiene una latencia de 128 ciclos, frente a los 4 ciclos de una multiplicación normal. Esta diferencia se debe a que el compilador vectoriza las operaciones, por lo que un solo valor subnormal puede degradar el rendimiento de todo el bloque de código. En cambio, en los procesadores AMD Zen 5 y en los arquitecturas ARM, las operaciones de multiplicación y adición se ejecutan a velocidad completa, independientemente de la naturaleza de los operandos. Por tanto, aunque los subnormales son raros, su presencia en los pipelines de Intel representa una carga de rendimiento considerable, mientras que en las últimas generaciones de AMD y ARM no constituye un problema crítico.