Vés al contingut

Precisió ampliada

De la Viquipèdia, l'enciclopèdia lliure

La precisió ampliada fa referència als formats de nombre de coma flotant que proporcionen una precisió més gran que els formats bàsics de coma flotant. Els formats de precisió ampliada admeten un format bàsic minimitzant els errors d'arrodoniment i desbordament en els valors intermedis d'expressions del format base. A diferència de la precisió estesa, l'aritmètica de precisió arbitrària es refereix a implementacions de tipus numèrics molt més grans (amb un nombre d'emmagatzematge que normalment no és una potència de dos) que utilitzen programari especial (o, rarament, maquinari).

Implementacions de precisió estesa

[modifica]

Hi ha una llarga història de formats de coma flotant estès que es remunta gairebé a mitjans del segle passat. Diversos fabricants han utilitzat diferents formats per obtenir una precisió ampliada per a diferents màquines. En molts casos, el format de la precisió ampliada no és exactament el mateix que una ampliació dels formats de precisió simple i doble que es pretén estendre. En alguns casos, la implementació va ser només un canvi basat en programari en el format de dades de coma flotant, però en la majoria dels casos la precisió ampliada es va implementar en el maquinari, ja sigui integrat al mateix processador central, o més sovint, integrat en el maquinari d'un processador adjunt opcional anomenat "unitat de coma flotant" (FPU) o "processador de coma flotant" (FPP), accessible a la CPU com a dispositiu ràpid d'entrada/sortida.

Formats de precisió ampliada d'IBM

[modifica]

L'IBM 1130, venut el 1965, oferia dos formats de coma flotant: un format de "precisió estàndard" de 32 bits i un format de "precisió estesa" de 40 bits. El format de precisió estàndard conté un significat de complement a dos de 24 bits, mentre que la precisió ampliada utilitza un significat de complement a dos de 32 bits. Aquest últim format fa un ús complet de les operacions senceres de 32 bits de la CPU. La característica en ambdós formats és un camp de 8 bits que conté la potència de dos esbiaixada per 128. Les operacions aritmètiques de coma flotant es realitzen mitjançant programari i la doble precisió no s'admet en absolut. El format estès ocupa tres paraules de 16 bits, i simplement s'ignora l'espai addicional.[1]

L'IBM System/360 admet un format de coma flotant "curt" de 32 bits i un format de coma flotant "llarg" de 64 bits.[2] El 360/85 i el següent System/370 afegeixen suport per a un format "ampliat" de 128 bits.[3] Aquests formats encara són compatibles amb el disseny actual, on ara s'anomenen formats de "punt flotant hexadecimal" (HFP).

Format de precisió ampliada de Microsoft MBF

[modifica]

El port de Microsoft BASIC per a la CPU 6502, com en adaptacions com Commodore BASIC, AppleSoft BASIC, KIM-1 BASIC o MicroTAN BASIC, admet una variant estesa de 40 bits del format de coma flotant Microsoft Binary Format (MBF) des de 1977.[4]

Formats de precisió ampliada IEEE 754

[modifica]

L'estàndard de coma flotant IEEE 754 recomana que les implementacions proporcionin formats de precisió ampliats. L'estàndard especifica els requisits mínims per a un format estès, però no especifica una codificació. La codificació és l'elecció de l'implementador.[5]

Format de precisió ampliada x86

[modifica]

El format de precisió estesa x86 és un format de 80 bits implementat per primera vegada al coprocessador matemàtic Intel 8087 i és compatible amb tots els processadors que es basen en el disseny x86 que incorporen una unitat de punt flotant (FPU).

L'Intel 8087 va ser el primer dispositiu x86 que admetia l'aritmètica de coma flotant al maquinari. Va ser dissenyat per suportar un format de "precisió única" de 32 bits i un format de "precisió doble" de 64 bits per codificar i intercanviar nombres de coma flotant. El format estès es va dissenyar no per emmagatzemar dades amb una precisió més alta, sinó per permetre el càlcul de resultats dobles temporals de manera més fiable i precisa, minimitzant els errors de desbordament i arrodoniment en els càlculs intermedis.[6][7] Tots els registres de coma flotant del 8087 tenen aquest format i converteix automàticament els números a aquest format quan es carreguen registres de la memòria i també converteix els resultats als formats més convencionals quan s'emmagatzemen els registres tornen a la memòria. Per permetre que els resultats de les subexpressions intermèdies es desin en variables de scratch de precisió estesa i es continuïn a través de les declaracions del llenguatge de programació i, en cas contrari, els càlculs interromputs per reprendre on es van interrompre, proporciona instruccions que transfereixen valors entre aquests registres interns i la memòria sense realitzar cap conversió i, per tant, permet l'accés al format estès per als càlculs - també reviu el problema de la precisió de les funcions d'aquests números, però amb una precisió més alta.

Referències

[modifica]
  1. Subroutine Library (en anglès). 9th. IBM Corporation, 1974, p. 93 (IBM 1130). 
  2. Principles of Operation (en anglès). 9th. IBM Corporation, 1970, p. 41 (IBM System/360). 
  3. IBM System/370 Principles of Operation (en anglès). 7th. IBM Corporation, 1980, p. 9Plantilla:Hyphen2 – 9Plantilla:Hyphen3. 
  4. Steil, Michael. «Create your own version of Microsoft BASIC for 6502» (en anglès). pagetable.com, 20-10-2008. Arxivat de l'original el 2016-05-30. [Consulta: 30 maig 2016].
  5. Brewer, Kevin. «Kevin's Report» (en anglès). IEEE-754 Reference Material. Arxivat de l'original el 2011-12-01. [Consulta: 19 febrer 2012].
  6. Einarsson, Bo. Accuracy and reliability in scientific computing (en anglès). SIAM, 2005, p. 9ff. ISBN 978-0-89871-815-7. 
  7. «Intel 64 and IA-32 Architectures» (en anglès). Intel Corp., 01-03-2012.