Estoy usando el procesador Cortex-A8 y no entiendo cómo usar la bandera -mfpu
.ARM Cortex-A8: Cómo hacer uso de NEON y vfpv3
En el Cortex-A8, existen tanto vfpv3 y neón coprocesadores. Anteriormente era no saber cómo utilizar el neón por lo que sólo estaba usando
gcc -marm -mfloat-abi=softfp -mfpu=vfpv3
Ahora he entendido cómo funcionan los procesadores SIMD y he escrito determinado código usando las características intrínsecas de neón. Para utilizar el neón coprocesador ahora mi bandera -mfpu tiene que cambiar para -mfpu=neon
, por lo que mi línea de comandos del compilador se ve así
gcc -marm -mfloat-abi=softfp -mfpu=neon
Ahora bien, ¿significa esto que mi vfpv3
no se utiliza más? Tengo un montón de código que no está haciendo uso de NEON, esas partes no hacen uso de vfpv3
.
Si todavía se usan tanto neon como vfpv3, entonces no tengo problemas, pero si solo se usa uno de ellos, ¿cómo puedo usar ambos?
Igor Tengo solo valores de punto flotante de precisión simple. De hecho, veo un montón de instrucciones f (fadds, fsitos), así que creo que las instrucciones vfp todavía están siendo emitidas por el compilador. – HaggarTheHorrible
Una pregunta no relacionada, ¿sabes lo que significa un procesador de doble emisión? Cortex-A8 es un procesador de doble emisión, ¿qué significa? ¿Puedes indicarme algún enlace? Mi búsqueda no fue tan productiva. – HaggarTheHorrible
Vikram, Coretex A8 es un procesador fuera de servicio de doble orden. Eso significa (de manera variada) que puede hacer una o todas 1) decodificar y poner en cola para ejecución fuera de orden dos instrucciones por reloj, 2) ejecutar dos instrucciones en cola por reloj y/o 3) puede retirar dos de tales resultados por reloj. En otras palabras, en las mejores condiciones puede ejecutar dos instrucciones por reloj, sostenido. Las mejores condiciones solo ocurren cuando no hay errores de caché, errores de predicción de sucursales, etc. –