Pregunta

Si bien, por lo que yo recuerdo, IEEE 754 no dice nada acerca de un modo de descarga a cero para manejar los números no normalizados más rápido, algunas arquitecturas ofrecen este modo (por ejemplo, http: // docs.sun.com/source/806-3568/ncg_lib.html ).

En el caso particular de esta documentación técnica, el manejo estándar de números no normalizados es el valor por defecto, y al ras a cero tiene que ser activado de forma explícita. En el modo por defecto, los números no normalizados también se manejan en el software, que es más lento.

Yo trabajo en un analizador estático para C incorporado que intenta predecir correcto (si a veces imprecisos) rangos de los valores que pueden suceder en tiempo de ejecución. Su objetivo es ser correcta, ya que se pretende que sea útil para excluir la posibilidad de que algo va mal en tiempo de ejecución (por ejemplo para el código embebido crítico). Esto requiere después de haber capturado todos los comportamientos posibles durante el análisis, y por lo tanto todos los valores posibles produce durante los cálculos de punto flotante.

En este contexto, mi pregunta es doble:

  1. entre las arquitecturas integradas, están allí arquitecturas que sólo ofrecen a nivel a cero? Ellos tal vez no tendrían que derecho a anunciarse a sí mismos como "IEEE 754", pero podrían ofrecer Primer suficientes operaciones de punto flotante IEEE 754 de estilo.

  2. En las arquitecturas que ofrecen tanto, en un contexto incorporado, no es a nivel a cero probabilidades de ser activado por el sistema , con el fin de hacer que el tiempo de reacción más predecible (una limitación común para estos sistemas embebidos)?

Cuidado de limpiar-a-cero en la aritmética de intervalos que utilizo para los valores de punto flotante es bastante simple si sé que tengo que hacerlo, mi pregunta es más si tengo que hacerlo.

¿Fue útil?

Solución

Sí a las dos preguntas. Hay plataformas que admiten sólo ras a cero, y hay muchas plataformas donde ras a cero es el valor predeterminado.

También debe tener en cuenta que muchos embebidos y plataformas DSP utilizan un modo de "Denormals son cero", que es otra arruga en la semántica de punto flotante.


Editar una explicación adicional de FTZ vs. DAZ:

En FTZ, cuando una operación produciría un resultado denormal bajo la aritmética usual, se devuelve en lugar de un cero. Tenga en cuenta que algunas implementaciones siempre al ras a cero positivo, mientras que otros pueden lavar a cero positivo o negativo. Es probablemente el mejor no depender de cualquiera de comportamiento.

En DAZ, cuando una entrada a una operación es un denormal, se sustituye un cero en su lugar. Una vez más, no hay garantía general acerca de los cuales se sustituye cero.

Algunas implementaciones que soportan estos modos les permiten ajustar de forma independiente (y algo de apoyo solamente uno de los dos), por lo que puede ser necesario que usted sea capaz modelo de cualquiera de los modos de forma independiente, así como en conjunto.

Tenga en cuenta también que algunas implementaciones se combinan estos dos modos en "Flush a cero". El VFP ARM modo "flush a cero" es a la vez FTZ y DAZ, por ejemplo.

Otros consejos

Los núcleos ARM Cortex tienen un color a la opción cero, difícil ver cómo puede ignorarlo. Por otra parte, no tome asesoramiento empresarial de un foro. Hablar con sus clientes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top