x86 - tecnologia - Beneficios de x87 sobre SSE
x86 que significa (5)
Sé que x87 tiene una precisión interna más alta, que es probablemente la mayor diferencia que la gente ve entre él y las operaciones de ESS. Pero tengo que preguntarme, ¿hay algún otro beneficio al usar x87? Tengo la costumbre de escribir -mfpmath=sse
automáticamente en cualquier proyecto, y me pregunto si me estoy perdiendo algo más que ofrece la FPU x87.
- Está presente en máquinas realmente viejas.
EOF
La conversión entre float
y double
es más rápida con x87 (generalmente gratis) que con SSE. Con x87, puede cargar y almacenar un float
, double
o long double
hacia o desde la pila de registros y se convierte ao desde una precisión extendida sin costo adicional. Con SSE, se requieren instrucciones adicionales para hacer la conversión de tipos si los tipos se mezclan, porque los registros contienen valores float
o double
. Estas instrucciones de conversión son bastante rápidas pero toman tiempo adicional.
La solución real es abstenerse de mezclar float
y double
excesivamente, por supuesto, no usar x87.
Las instrucciones de FPU son más pequeñas que las instrucciones de SSE, por lo que son ideales para cosas de demoscene
x87 tiene algunas instrucciones que no existen en el conjunto de instrucciones SSE.
Fuera de la cabeza están todas las cosas trigonométricas como fsin, fcos, fatan, fatan2 y algunas de las cosas exponenciales / logarítmicas.
Si su código pasa la mayor parte del tiempo haciendo trigonometría, es posible que vea un ligero aumento de rendimiento si usa x87. Algunos algoritmos DSP caerían en esta categoría.
Sin embargo, para el código de código de matemáticas donde pasas la mayor parte del tiempo haciendo adiciones, multiplicaciones, etc. SSE suele ser más rápido.
Existe una considerable compatibilidad de sistemas pequeños y heredados con el x87: SSE es una característica del procesador relativamente nueva. Si su código se ejecuta en un microcontrolador integrado, existe una gran posibilidad de que no admita las instrucciones de SSE.
Incluso los sistemas que no tienen una FPU instalada a menudo proporcionarán emuladores de 80x87 que harán que el código se ejecute de forma transparente (más o menos). No conozco ningún emulador SSE; ciertamente, uno de mis sistemas no tiene ninguno, por lo que las versiones más recientes de Adobe Photoshop Elements se niegan a ejecutarse.
Las instrucciones de 80x87 tienen buenas características de operación paralela que han sido exploradas y analizadas a fondo desde su introducción en 1982 aproximadamente. Varios clones del x86 pueden detenerse en una instrucción SSE.