Número subnormal

En informàtica, els números denormales, desnormalizados, no normals o subnormales són números que omplin el buit de subdesbordamiento (underflow) en les proximitats del zero en aritmètica de punt flotant. Qualsevol número distint de zero en una magnitut menor que el menor número normal és 'subnormal'.
En un valor de punt flotant normal, no hi ha zeros principals en la mantissa; en canvi, els zeros principals es mouen a l'exponent. Aixina 0.0123 s'escriuria com 1.23 × 10−2. Els números denormales són números a on esta representació donaria lloc a un exponent que està per baix de l'exponent mínim (generalment l'exponent que té un ranc llimitat). Tals números es representen per mig de zeros principals en la mantissa.
La mantissa d'un número de punt flotant IEEE és la part d'un número de punt flotant que representa els dígits significatius. Per a un número normalisat positiu pot ser representat com a m0.m1m2m3...mp-2mp-1 (a on m representa un número significatiu i p és la precisió, i m0 és distint de zero). Note que per a un radix binari, el dígit binari líder sempre és 1. En un número denormal, com l'exponent és lo menor que pot ser, el zero és el primer dígit significatiu (0.m1m2m3...mp-2mp-1), lo que permet la representació dels números més prop de zero que el número normal més menut.
En omplir el buit de subdesbordamiento (underflow) d'esta manera, els dígits significatius es perden, pero no tan abruptament com en utilisar el flush to zero en l'aproximació de underflow (descartant tots els dígits significatius quan s'alcança el subdesbordamiento). Per lo tant la producció d'un número denormal a voltes es diu subdesbordamiento gradual, ya que permet un càlcul per a perdre precisió llentament quan el resultat és menut.
En IEEE 754-2008, els números denormales es renombran números subnormales, i són compatibles en abdós formats binaris i decimals. En formats d'intercanvi binaris, els números subnormales estan codificats en un exponent biaixat de 0, pero s'interpreten en el valor de l'exponent permés més menut, que és un de major (és dir, com si es codificara com un 1). En formats d'intercanvi decimals que no requerixen codificació especial perque el format recolza directament als números no normalisats
Matemàticament parlant, els números de punt flotant normalisats d'un signe donat, són més o menys espayats logarítmicament, i com qualsevol flotant normal de tamany finit, no poden incloure zeros. Els flotants denormales són un conjunt linealmente espayat de valors que cobrixen la brecha entre els flotants normals negatius i positius
Antecedents
Números denormales proporcionen la garantia de la suma i resta de números de punt flotant sense subdesbordamientos; dos números de punt flotant propencs sempre tenen una diferència representable distinta de zero. Sense desbordament gradual, la substracció a-b pot donar subdesbordamiento i produir zero a pesar de que els valors no són iguals. Açò pugues, a la seua volta, donar lloc, en la divisió per zero, a errors que no es poden produir quan s'usa desbordament gradual.[1]
Els números denormales es varen implementar en l'Intel 8087, mentres l'estàndart IEEE 754 s'estava escrivint. Eren, per molt, l'aspecte més controvertit de la proposta de format de K-C-S que finalment es va adoptar,[2] pero esta aplicació va demostrar que els denormales podrien utilisar-se en una aplicació pràctica. Algunes implementacions d'unitats de punt flotant no recolzen directament els números denormales en hardware, sino més be els simulen per mig d'algun tipo de soport de software. Encara que açò pot ser transparent per a l'usuari, pot originar càlculs que produïxen o consumixen els números denormales i són molt més llents que els càlculs similars en números normals.
Rendiment
Alguns sistemes manegen els valors denormales en hardware de la mateixa manera que els valors normals. Uns atres deixen el maneig de valors denormales al software del sistema i solament manegen zeros i valors normals en hardware. Manejar els valors denormales en el software sempre genera una disminució significativa en el rendiment. Quan es calculen els valors denormales en hardware, existixen tècniques d'implementació per a deixar el seu processament en les velocitats comparables a les dels números normals; aixina i tot, la velocitat de computació és significativament menor sobre molts dels processadors moderns; en casos extrems, les instruccions que impliquen els operants denormales poden córrer 100 voltes més llent.[3][4][5]
Esta diferència de velocitat pot ser un risc de seguritat. Els investigadors varen mostrar que proporciona un canal lateral de temps que permet a un lloc web maliciós extraure contingut d'un atre sitie web dins d'un navegador.[6]
Algunes aplicacions necessiten encapsular còdic per a evitar números denormales, per a mantindre exactitut o per a evitar la penalisació de rendiment en alguns processadors. Per eixemple, en les aplicacions de processament d'àudio, els valors denormales generalment representen una senyal tan suau que està fòra de la gama d'oït humana. Per açò, una mida comuna per a evitar valors denormales en processadors, a on hi hauria una penalisació de rendiment, és tallar la senyal a zero una volta que alcança nivells denormales o mesclar en una senyal de soroll extremadament silenciós.[7] Atres métodos de prevenció dels números denormales són afegir un desplaçament DC, quantificant els números, l'adició d'una senyal de Nyquist, etc.[8] Des de l'extensió del processador SSE2, Intel ha proporcionat tal funcionalitat en CPU, que redoneja números denormales a zero.[9]
Vore també
Referències
- ↑ 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, Són 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-Llaure-Zero (DAZ)".
Referències
- Este artícul conté una traducció derivada de «Número subnormal» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.