fbpx
Wikipedia

Número subnormal

En informática, los números denormales, desnormalizados, no normales o subnormales son números que llenan el vacío de subdesbordamiento (underflow) en las proximidades del cero en aritmética de punto flotante. Cualquier número distinto de cero con una magnitud menor que el menor número normal es 'subnormal'.

En un valor de punto flotante normal, no hay ceros principales en la mantisa; en cambio, los ceros principales se mueven al exponente. Así 0.0123 se escribiría como 1.23 × 10−2. Los números denormales son números donde esta representación daría lugar a un exponente que está por debajo del exponente mínimo (generalmente el exponente que tiene un rango limitado). Tales números se representan mediante ceros principales en la mantisa.

La mantisa de un número de punto flotante IEEE es la parte de un número de punto flotante que representa los dígitos significativos. Para un número normalizado positivo puede ser representado como m0.m1m2m3...mp-2mp-1 (donde m representa un número significativo y p es la precisión, y m0 es distinto de cero). Note que para un radix binario, el dígito binario líder siempre es 1. En un número denormal, como el exponente es lo menor que puede ser, el cero es el primer dígito significativo (0.m1m2m3...mp-2mp-1), lo que permite la representación de los números más cerca de cero que el número normal más pequeño.

Al llenar el vacío de subdesbordamiento (underflow) de esta manera, los dígitos significativos se pierden, pero no tan abruptamente como al utilizar el flush to zero en la aproximación de underflow (descartando todos los dígitos significativos cuando se alcanza el subdesbordamiento). Por lo tanto la producción de un número denormal a veces se llama subdesbordamiento gradual, ya que permite un cálculo para perder precisión lentamente cuando el resultado es pequeño.

En IEEE 754-2008, los números denormales se renombran números subnormales, y son compatibles con ambos formatos binarios y decimales. En formatos de intercambio binarios, los números subnormales están codificados con un exponente sesgado de 0, pero se interpretan con el valor del exponente permitido más pequeño, que es uno mayor (es decir, como si se codificara como un 1). En formatos de intercambio decimales que no requieren codificación especial porque el formato apoya directamente a los números no normalizados

Matemáticamente hablando, los números de punto flotante normalizados de un signo dado, son más o menos espaciados logarítmicamente, y como cualquier flotante normal de tamaño finito, no pueden incluir ceros. Los flotantes denormales son un conjunto linealmente espaciado de valores que cubren la brecha entre los flotantes normales negativos y positivos

Antecedentes

Números denormales proporcionan la garantía de la suma y resta de números de punto flotante sin subdesbordamientos; dos números de punto flotante cercanos siempre tienen una diferencia representable distinto de cero. Sin desbordamiento gradual, la sustracción a-b puede dar subdesbordamiento y producir cero a pesar de que los valores no son iguales. Esto puede, a su vez, dar lugar, en la división por cero, a errores que no se pueden producir cuando se usa desbordamiento gradual.[1]

Los números denormales se implementaron en el Intel 8087, mientras que el estándar IEEE 754 estaba siendo escrito. Ellos eran, por mucho, el aspecto más controversial de la propuesta de formato de K-C-S que finalmente se adoptó,[2]​ pero esta aplicación demostró que los denormales podrían utilizarse en una aplicación práctica. Algunas implementaciones de unidades de punto flotante no apoyan directamente los números denormales en hardware, sino más bien los simulan mediante algún tipo de soporte de software. Aunque esto puede ser transparente para el usuario, puede resultar en cálculos que producen o consumen los números denormales siendo mucho más lento que los cálculos similares en números normales.

Rendimiento

Algunos sistemas manejan los valores denormales en hardware, en la misma manera que los valores normales. Otros dejan el manejo de valores denormales al software del sistema, y solo manejan ceros y valores normales en hardware. Manejar los valores denormales en el software siempre genera una disminución significativa en el rendimiento. Cuándo se computan los valores denormales en hardware, existen técnicas de implementación para dejar su procesamiento en las velocidades comparables a las de los números normales; aun así, la velocidad de computación es significativamente menor, sobre muchos de los procesadores modernos; en casos extremos, las instrucciones que implican los operandos denormales pueden correr 100 veces más lento.[3][4][5]

Esta diferencia de velocidad puede ser un riesgo de seguridad. Los investigadores mostraron que proporciona un canal lateral de tiempo que permite a un sitio web malicioso, extraer contenido de otro sitio web dentro de un navegador.[6]

Algunas aplicaciones necesitan encapsular código para evitar números denormales, para mantener exactitud o para evitar la penalización de rendimiento en algunos procesadores. Por elemplo, en las aplicaciones de procesamiento de audio, los valores denormales generalmente representan una señal tan suave que está fuera de la gama de oído humana. Debido a esto, una medida común para evitar valores denormales en procesadores, donde habría una penalización de rendimiento, es cortar la señal a cero una vez que alcanza niveles denormales o mezclar en una señal de ruido extremadamente silencioso.[7]​ Otros métodos de prevención de los números denormales incluyen añadir un desplazamiento DC, cuantificando los números, la adición de una señal de Nyquist, etc.[8]​ Desde la extensión del procesador SSE2, Intel ha proporcionado tal funcionalidad en CPU, el cual redondea números denormales a cero.[9]

Desactivación de flotantes denormales a nivel de código

El lenguaje C de Intel y los compiladores de Fortran habilitan los cero denormales (Denormals Are Cero -DAZ) y las banderas ras a cero (flush-to-zero FTZ) para SSE por defecto en los niveles de optimización superiores -O0.[10]​ El efecto de DAZ es para tratar argumentos denormales de entrada a operaciones de punto flotante como cero, y el efecto de FTZ es para regresar a cero en vez de un flotante denormal en operaciones en las cuales resultaría en un flotante denormal, incluso si los argumentos de entrada no se son denormales por sí mismos. clang y gcc tienen diferentes estados predeterminados dependiendo del nivel de la plataforma y la optimización. Un método , no C99-compatible, de permitir las banderas DAZ y de FTZ en los objetivos de apoyo SSE se da a continuación, pero no es ampliamente apoyado. Se sabe que funciona en Mac OS X desde al menos 2006.[11]

#include <fenv.h> fesetenv(FE_DFL_DISABLE_SSE_DENORMS_ENV); 

Para otras plataformas de instrucciones SSE-establecidos no se ha implementado la bandera anterior en la biblioteca de C, lo siguiente puede trabajar:[12]

#include <xmmintrin.h> _mm_setcsr( _mm_getcsr() | 0x8040 ); 

Es generalmente recomendado utilizar el macro _MM_SET_DENORMALS_ZERO_MODE porque evitará sobrescribir cualquier otra configuración en el CSR.

_MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON); 

La mayoría de los compiladores ya proporcionan el anterior macro por defecto, en cualquier caso, el siguiente fragmento de código puede ser utilizado.

#define _MM_DENORMALS_ZERO_MASK 0x0040 #define _MM_DENORMALS_ZERO_ON 0x0040 #define _MM_DENORMALS_ZERO_OFF 0x0000 #define _MM_SET_DENORMALS_ZERO_MODE(mode)    \  _mm_setcsr((_mm_getcsr() & ~_MM_DENORMALS_ZERO_MASK) | (mode)) #define _MM_GET_DENORMALS_ZERO_MODE()    \  (_mm_getcsr() & _MM_DENORMALS_ZERO_MASK) 

Tenga en cuenta que ambos métodos deben realizarse sobre la base de hilos. Al utilizar esquemas de paralelismo basados en tareas (como en Despacho Central Magnífico) cuando la aplicación tiene poco o ningún control sobre el hilo que está ejecutando una tarea determinada, esto puede requerir la desactivación explícita de valores denormales al comienzo de cada tarea.

Véase también

  • Sistema logarítmico de numeración
  • Sistema enfocado en números

Referencias

  1. William Kahan.
  2. An Interview with the Old Man of Floating-Point Reminiscences elicited from William Kahan by Charles Severance
  3. Schwarz, Eric M.; Schmookler, Martin; Trong, Son Dao (July 2005).
  4. Dooley, Isaac; Kale, Laxmikant (2006-09-12).
  5. Fog, Agner.
  6. Andrysco, Marc; Kohlbrenner, David; Mowery, Keaton; Jhala, Ranjit; Lerner, Sorin; Shacham, Hovav.
  7. Serris, John (2002-04-16).
  8. de Soras, Laurent (2005-04-19).
  9. Casey, Shawn (2008-10-16). "x87 and SSE Floating Point Assists in IA-32: Flush-To-Zero (FTZ) and Denormals-Are-Zero (DAZ)".
  10. http://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/2011Update/fortran/win/fpops/common/fpops_reduce_denorm.htm
  11. . Archivado desde el original el 15 de enero de 2014. Consultado el 24 de enero de 2013. 
  12. . Archivado desde el original el 15 de enero de 2014. Consultado el 24 de enero de 2013. 

Leer más

  • Eric Schwarz, Martin Schmookler and Son Dao Trong (June 2003). «Hardware Implementations of Denormalized Numbers». Proceedings 16th IEEE Symposium on Computer Arithmetic (Arith16). 16th IEEE Symposium on Computer Arithmetic. IEEE Computer Society. pp. 104-111. ISBN 0-7695-1894-X.  (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). Eric Schwarz, Martin Schmookler and Son Dao Trong (June 2003). «Hardware Implementations of Denormalized Numbers». Proceedings 16th IEEE Symposium on Computer Arithmetic (Arith16). 16th IEEE Symposium on Computer Arithmetic. IEEE Computer Society. pp. 104-111. ISBN 0-7695-1894-X.  (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).

Ver también varias publicaciones científicas en el sitio web de William Kahan con ejemplos de donde denormales ayudan a mejorar los resultados de cálculo.

  •   Datos: Q1070094

número, subnormal, informática, números, denormales, desnormalizados, normales, subnormales, números, llenan, vacío, subdesbordamiento, underflow, proximidades, cero, aritmética, punto, flotante, cualquier, número, distinto, cero, magnitud, menor, menor, númer. En informatica los numeros denormales desnormalizados no normales o subnormales son numeros que llenan el vacio de subdesbordamiento underflow en las proximidades del cero en aritmetica de punto flotante Cualquier numero distinto de cero con una magnitud menor que el menor numero normal es subnormal En un valor de punto flotante normal no hay ceros principales en la mantisa en cambio los ceros principales se mueven al exponente Asi 0 0123 se escribiria como 1 23 10 2 Los numeros denormales son numeros donde esta representacion daria lugar a un exponente que esta por debajo del exponente minimo generalmente el exponente que tiene un rango limitado Tales numeros se representan mediante ceros principales en la mantisa La mantisa de un numero de punto flotante IEEE es la parte de un numero de punto flotante que representa los digitos significativos Para un numero normalizado positivo puede ser representado como m0 m1m2m3 mp 2mp 1 donde m representa un numero significativo y p es la precision y m0 es distinto de cero Note que para un radix binario el digito binario lider siempre es 1 En un numero denormal como el exponente es lo menor que puede ser el cero es el primer digito significativo 0 m1m2m3 mp 2mp 1 lo que permite la representacion de los numeros mas cerca de cero que el numero normal mas pequeno Al llenar el vacio de subdesbordamiento underflow de esta manera los digitos significativos se pierden pero no tan abruptamente como al utilizar el flush to zero en la aproximacion de underflow descartando todos los digitos significativos cuando se alcanza el subdesbordamiento Por lo tanto la produccion de un numero denormala veces se llama subdesbordamiento gradual ya que permite un calculo para perder precision lentamente cuando el resultado es pequeno En IEEE 754 2008 los numeros denormales se renombran numeros subnormales y son compatibles con ambos formatos binarios y decimales En formatos de intercambio binarios los numeros subnormales estan codificados con un exponente sesgado de 0 pero se interpretan con el valor del exponente permitido mas pequeno que es uno mayor es decir como si se codificara como un 1 En formatos de intercambio decimales que no requieren codificacion especial porque el formato apoya directamente a los numeros no normalizadosMatematicamente hablando los numeros de punto flotante normalizados de un signo dado son mas o menos espaciados logaritmicamente y como cualquier flotante normal de tamano finito no pueden incluir ceros Los flotantes denormales son un conjunto linealmente espaciado de valores que cubren la brecha entre los flotantes normales negativos y positivos Indice 1 Antecedentes 2 Rendimiento 3 Desactivacion de flotantes denormales a nivel de codigo 4 Vease tambien 5 Referencias 6 Leer masAntecedentes EditarNumeros denormales proporcionan la garantia de la suma y resta de numeros de punto flotante sin subdesbordamientos dos numeros de punto flotante cercanos siempre tienen una diferencia representable distinto de cero Sin desbordamiento gradual la sustraccion a b puede dar subdesbordamiento y producir cero a pesar de que los valores no son iguales Esto puede a su vez dar lugar en la division por cero a errores que no se pueden producir cuando se usa desbordamiento gradual 1 Los numeros denormales se implementaron en el Intel 8087 mientras que el estandar IEEE 754 estaba siendo escrito Ellos eran por mucho el aspecto mas controversial de la propuesta de formato de K C S que finalmente se adopto 2 pero esta aplicacion demostro que los denormales podrian utilizarse en una aplicacion practica Algunas implementaciones de unidades de punto flotante no apoyan directamente los numeros denormales en hardware sino mas bien los simulan mediante algun tipo de soporte de software Aunque esto puede ser transparente para el usuario puede resultar en calculos que producen o consumen los numeros denormales siendo mucho mas lento que los calculos similares en numeros normales Rendimiento EditarAlgunos sistemas manejan los valores denormales en hardware en la misma manera que los valores normales Otros dejan el manejo de valores denormales al software del sistema y solo manejan ceros y valores normales en hardware Manejar los valores denormales en el software siempre genera una disminucion significativa en el rendimiento Cuando se computan los valores denormales en hardware existen tecnicas de implementacion para dejar su procesamiento en las velocidades comparables a las de los numeros normales aun asi la velocidad de computacion es significativamente menor sobre muchos de los procesadores modernos en casos extremos las instrucciones que implican los operandos denormales pueden correr 100 veces mas lento 3 4 5 Esta diferencia de velocidad puede ser un riesgo de seguridad Los investigadores mostraron que proporciona un canal lateral de tiempo que permite a un sitio web malicioso extraer contenido de otro sitio web dentro de un navegador 6 Algunas aplicaciones necesitan encapsular codigo para evitar numeros denormales para mantener exactitud o para evitar la penalizacion de rendimiento en algunos procesadores Por elemplo en las aplicaciones de procesamiento de audio los valores denormales generalmente representan una senal tan suave que esta fuera de la gama de oido humana Debido a esto una medida comun para evitar valores denormales en procesadores donde habria una penalizacion de rendimiento es cortar la senal a cero una vez que alcanza niveles denormales o mezclar en una senal de ruido extremadamente silencioso 7 Otros metodos de prevencion de los numeros denormales incluyen anadir un desplazamiento DC cuantificando los numeros la adicion de una senal de Nyquist etc 8 Desde la extension del procesador SSE2 Intel ha proporcionado tal funcionalidad en CPU el cual redondea numeros denormales a cero 9 Desactivacion de flotantes denormales a nivel de codigo EditarEl lenguaje C de Intel y los compiladores de Fortran habilitan los cero denormales Denormals Are Cero DAZ y las banderas ras a cero flush to zero FTZ para SSE por defecto en los niveles de optimizacion superiores O0 10 El efecto de DAZ es para tratar argumentos denormales de entrada a operaciones de punto flotante como cero y el efecto de FTZ es para regresar a cero en vez de un flotante denormal en operaciones en las cuales resultaria en un flotante denormal incluso si los argumentos de entrada no se son denormales por si mismos clang y gcc tienen diferentes estados predeterminados dependiendo del nivel de la plataforma y la optimizacion Un metodo no C99 compatible de permitir las banderas DAZ y de FTZ en los objetivos de apoyo SSE se da a continuacion pero no es ampliamente apoyado Se sabe que funciona en Mac OS X desde al menos 2006 11 include lt fenv h gt fesetenv FE DFL DISABLE SSE DENORMS ENV Para otras plataformas de instrucciones SSE establecidos no se ha implementado la bandera anterior en la biblioteca de C lo siguiente puede trabajar 12 include lt xmmintrin h gt mm setcsr mm getcsr 0x8040 Es generalmente recomendado utilizar el macro MM SET DENORMALS ZERO MODE porque evitara sobrescribir cualquier otra configuracion en el CSR MM SET DENORMALS ZERO MODE MM DENORMALS ZERO ON La mayoria de los compiladores ya proporcionan el anterior macro por defecto en cualquier caso el siguiente fragmento de codigo puede ser utilizado define MM DENORMALS ZERO MASK 0x0040 define MM DENORMALS ZERO ON 0x0040 define MM DENORMALS ZERO OFF 0x0000 define MM SET DENORMALS ZERO MODE mode mm setcsr mm getcsr amp MM DENORMALS ZERO MASK mode define MM GET DENORMALS ZERO MODE mm getcsr amp MM DENORMALS ZERO MASK Tenga en cuenta que ambos metodos deben realizarse sobre la base de hilos Al utilizar esquemas de paralelismo basados en tareas como en Despacho Central Magnifico cuando la aplicacion tiene poco o ningun control sobre el hilo que esta ejecutando una tarea determinada esto puede requerir la desactivacion explicita de valores denormales al comienzo de cada tarea Vease tambien EditarSistema logaritmico de numeracion Sistema enfocado en numerosReferencias Editar William Kahan An Interview with the Old Man of Floating Point Reminiscences elicited from William Kahan by Charles Severance Schwarz Eric M Schmookler Martin Trong Son Dao July 2005 Dooley Isaac Kale Laxmikant 2006 09 12 Fog Agner Andrysco Marc Kohlbrenner David Mowery Keaton Jhala Ranjit Lerner Sorin Shacham Hovav Serris John 2002 04 16 de Soras Laurent 2005 04 19 Casey Shawn 2008 10 16 x87 and SSE Floating Point Assists in IA 32 Flush To Zero FTZ and Denormals Are Zero DAZ http software intel com sites products documentation hpc composerxe en us 2011Update fortran win fpops common fpops reduce denorm htm Copia archivada Archivado desde el original el 15 de enero de 2014 Consultado el 24 de enero de 2013 Copia archivada Archivado desde el original el 15 de enero de 2014 Consultado el 24 de enero de 2013 Leer mas EditarEric Schwarz Martin Schmookler and Son Dao Trong June 2003 Hardware Implementations of Denormalized Numbers Proceedings 16th IEEE Symposium on Computer Arithmetic Arith16 16th IEEE Symposium on Computer Arithmetic IEEE Computer Society pp 104 111 ISBN 0 7695 1894 X enlace roto disponible en Internet Archive vease el historial la primera version y la ultima Eric Schwarz Martin Schmookler and Son Dao Trong June 2003 Hardware Implementations of Denormalized Numbers Proceedings 16th IEEE Symposium on Computer Arithmetic Arith16 16th IEEE Symposium on Computer Arithmetic IEEE Computer Society pp 104 111 ISBN 0 7695 1894 X enlace roto disponible en Internet Archive vease el historial la primera version y la ultima Ver tambien varias publicaciones cientificas en el sitio web de William Kahan con ejemplos de donde denormales ayudan a mejorar los resultados de calculo Datos Q1070094Obtenido de https es wikipedia org w index php title Numero subnormal amp oldid 136531770, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos