Sunteți pe pagina 1din 23

18.1. - Introduccin......................................................................

1
18.2. - Estructura interna............................................................ 1
18.6.1.- Regstros de datos....................................................... 2
18.6.2.- Regstros de estado................................................... 4
18.6.3.- Satos y movmentos condconaes en a condcn de
cdgo de
a FPU............................................................................. 7
18.6.4.- Regstros de contro .................................................. 8
18.6.5.- Fag de contro de nfnto............................................ 9
18.6.6.- Regstros de paabra ................................................. 9
18.6.7.- Puntero de nstruccones y datos................................ 9
18.6.8.- Regstros de cdgo ..................................................
10
18.3. - Tipos de datos..................................................................
10
18.4. Orgenes del coprocesador matemtico en el
entium!
12
18.". - Instrucciones....................................................................
12
18.#. $istoria del error de la %& del entium ....................
16
18.6.1 - Mantsas, exponentes y precsones.........................
17
18.6.2 - Contnuando con e error .........................................
17
Captulo 18 - 1

COPROCESADOR MATEMTICO (FPU)
Captulo 18: Coprocesador matemtico (FPU)
18.1- INTRODUCCIN.
Los coprocesadores matemtcos eran crcutos ntegrados que se
aadan, opconamente, a os sstemas procesadores para ampar e
nmero de nstruccones capaces de nterpretar y e|ecutar, especamente
de tpo matemtco. Un coprocesador se encarga de reazar operacones
con nmeros reaes representados segn agn estndar, habtuamente e
IEEE 754. Los coprocesadores funconan de dos formas dferentes:
1. Los memory-mapped funconan de forma que sus operandos e
nstruccones son coocadas en unas poscones de memora
determnadas por parte de mcroprocesador. Cuando tene e resutado,
genera una nterrupcn y e procesador recoge e resutado de otra
poscn de memora. Tenen a venta|a de que son ndependentes de
mcroprocesador, como por e|empo os Weitek. Evdentemente, se trata
de coprocesdores externos. Como coprocesadores matemtcos estn
prctcamente en desuso; sn embargo, agn otro coprocesador
funcona tambn de esta forma.
2. Otros, sn embargo, comparten e fu|o de nstruccones con e
mcroprocesador, de forma que cuando e mcroprocesador detecta una
nstruccn que no es suya, a enva a coprocesador, que a e|ecuta y
devueve os resutados a mcroprocesador. Este es e caso de os
coprocesado-
res nternos como ocurre en e Pentum en e que as FPU que van
ncudas dentro de os m-
roprocesadores
Cada vez es mayor e nmero de programas y apcacones que
requeren a actuacn de un coprocesador matemtco. Se ctan agunas
popuares:
Programas de smuacn.
Ho|as eectrncas.
CAD-CAM.
Captulo 18 - 2
Captulo 18: Coprocesador matemtico (FPU)
Grfcos.
Contro numrco.
Robtca.
Vsn computerzada.
Integenca artfca.
18.2- ESTRUCTURA INTERNA.
E coprocesador traba|a nternamente so en formato rea, por o que
cuaquer carga en os regstros de coprocesador provocar que dcho vaor
sea convertdo a coma fotante.
Sus regstros estn estructurados en forma de pa y se accede a eos
por e nmero de entrada que ocupan en a pa.
La FPU es un coprocesador que opera con undades enteras de otros
procesadores que coge sus nstruccones desde e msmo decodfcador y
secuencador que a undad de enteros compartendo e bus de sstema con
esta.. A pesar de este hecho a undad de enteros y a FPU operan
ndependentemente y en paraeo. (La actua mcroarqutectura de os
procesadores Inte vara entre a varedad de fama de procesadores. Por
e|empo e procesador Pentum Pro posee dos undades de enteros y dos
FPUs mentras que e procesador Pentum tene dos undades de enteros y
una FPU y e prcesador 486 dspone de una undad de enteros y una FPU)

BUS DE DATOS
Fgura 18.1 Reacn entre a undad de enteros y a FPU
Las nstruccones de e|ecuccn de a FPU conssten en 8 regstros de
datos (amados regstros de datos de a FPU) y os sguentes regstros
especaes:
Captulo 18 - 3
DECODIFICADOR Y
SECUENCIADOR DE
INSTRUCCIONES
UNIDAD
DE
ENTEROS
FPU
Captulo 18: Coprocesador matemtico (FPU)
Regstros de estado
Regstros de contro
Regstros de paabra
Regstro puntero de nstruccones
Regstro puntero a tmo operando (puntero dato)
Regstro cdgos
18.2.1 Registrs !e !"ts
Est formada por 8 regstros de 80 bts. Los regstros generaes R1 a R8
soportan datos con e formato normazado de dobe precsn con 80 bts.
Como han de ser mane|ados en formato de pa, e coprocesador tene un
puntero de contro de pa amado "St". Toda nteraccn que tengamos que
hacer con os regstros de coprocesador se reaza a travs de puntero de
pa St, donde e utmo vaor ntroducdo es St o St(0) y s hubramos
reenado todos os regstros e utmo sera St(7).
EXPONENTE MANTISA
79 78 64 63 0
R1

R2
15 0
R3
REGISTRO DE ESTADO
R4
REGISTRO DE CONTROL
R5
TAG
R6

R7
R8
47 0
Captulo 18 - 4

SIGNO
PUNTERO DE INSTRUCCIONES DE LA FPU
PUNTERO DE OPERANDOS(DATOS) DE LA FPU
Captulo 18: Coprocesador matemtico (FPU)
10
0
Fgura 18.2 Regstros de coprocesador
Podemos observar cmo dchos regstros estn dvddos en tres
seccones: sgno, exponente de 15 bts y mantsa de 64 bts.
Todas as operacones de coprocesador se reazan usando os ocho
regstros generaes, que estn organzados en forma de pa, no pudndose
acceder a eos de forma arbtrara.
Fgura 18.3 Regstro de pa de datos de a FPU
Todas as dreccones de os regstros de datos estn reatvas a regstro
de a cma de a pa. E nmero de regstro de a cma de a pa actvo es
amacenado en e campo CIMA en a paabra de estado de a CPU. Las
operacones de carga decrementan a cma en undad en undad y cargan
un vaor en a nueva cma de a pa, cargan operacones, cargan e vaor
de regstro cma actua en memora y posterormente ncrementan a cma
una a una.. (Para a FPU una operacn de carga es equvaente a un
apamento, o que se conoce como "push" y una operacn de
amacenamento equvae a una extraccn o "pop").
S una operacn de carga es reazada cuando a cma est a 0, se crea
una devoucn de regstro y e nuevo vaor de a cma es puesto a 7. La
excepcn de desbordamento de pa de a undad de coma fotante, ndca
cuando es posbe que ocurra esta devoucn y borran e vaor para que sea
reescrto. ( La excepcn que ndca desbordamento de pa es a #IS).
Muchas nstruccones en coma fotante tenen varos modos de
drecconamento para permtr a programador operar mpctamente en a
Captulo 18 - 5
CODIGO
ST(2)
ST(1)
ST(0) 011B
CIMA
7
6
5
4
3
2
1
0
CRECIMIENTO
Captulo 18: Coprocesador matemtico (FPU)
cma de a pa, u operar expctamente en un regstro especfco reatvo a
a cma. Los ensambadores evan a cabo este modo de drecconamento,
usando a expresn ST(0) o smpemente ST, para representar a cma de a
pa actua ST() para especfcar e regstro ""avo desde a cma en a cma
(0 7). Por e|empo s a cma contene 011B (regstro 3 en a cma de a
pa), a sguente nstruccn debera aadr e contendo de dos regstros en
a pa (regstros 3 y 5).
Como ocurre en os regstros de propsto genera de en os
procesadores de undades de enteros, e contendo de os regstros de
datos de a FPU no se ve afectado por procedmentos de amadas, en otras
paabras, os vaores se mantenen a travs de procedmentos mtantes.
Una amada a pueden usar os regstros de datos de a FPU para pasar
parmetros entre procedmentos. Los procedmentos de amada pueden
hacer referenca a os parmetros pasados a travs de os regstros pa
usados en e actua puntero de a pa (TOP) y en as nomencaturas ST(0) y
ST(). Suee ser habtua para un procedmento de amada de|ar un vaor
de retorno o resutado en e regstro ST(0) cuando se devueve a e|ecucn
de una amada o programa.
E coprocesador soporta os sguentes tpos de datos:
1. Enteros de 16, 32 y 64 bts.
2. BCD empaquetados de 80 bts.
3. Nmeros en coma fotante de 32, 64 y 80 bts.
18.2.2 Registrs !e est"!
Estos 16 bts de regstro de estado ndcan a stuacn actua de a FPU. Los
fags ncudos son os sguentes: fag-acupado o "busy-fag", puntero de a
cma de a pa (TOP), fags de condcn de cdgo, de estado de error y de
excepcn. La FPU actva estos fags para mostrar e resutado de sus
operacones.
E contendo de os regstros de estado de a FPU (referdos a estado de
paabra )pueden ser amacenados en memora usando a nstruccones
FTSW/ FSTSW , FSTENV/FNSTENV, Y FSAVE/FNSAVE. Pueden ser
amacenados tambn en e regstro AX de a undad de enteros usando as
nstruccones FSTSW/FNSTSW
En a fgura18.4 se muestra a dstrbucn de os 16 bts de Paabra de
Estado de coprocesador matemtco.
15 0
B C3 TOP C2 C1 C0 ES SF PE UE OE ZE DE IE
Captulo 18 - 6
Captulo 18: Coprocesador matemtico (FPU)
Fgura 18.4. Dstrbucn de os bts en a Paabra de Estado de coprocesador
matemtco.
TO: Este campo de 3 bts de a Paabra de Estado muestra e
prmer regstro. Reaza abores smares a puntero de pa
ESP. Estos bts pueden, medante nstruccones en coma fotante
taes como FLD y FSTP (stas son smares a as nstruccones
de tpo entero PUSH y POP), decrementar e TOP en 1 y coocar
un vaor en su respectvo regstro o ncrementar e TOP en 1 y
retrar e regstro pertnente. La pa se ncrementa de manera
descendente para regstrar nmeros menores. Impctamente,
a mayor parte de nstruccones drecconan e regstro cma de
a pa, es decr, e regstro con e nmero amacenado en e
campo TOP de regstro de estado. Tambn podremos
especfcar expctamente un regstro con dversas nstruccones
en coma fotante. F|ese que e regstro especfcado
expctamente no es absouto sno reatvo a TOP.
' ( E)* Sempre tenen e msmo vaor e nforma de estado de
error. S ES = 1 se produce una excepcn no mascarabe cuyo
motvo o ndcan os bts SP e IE. Ba|o nngn concepto e bt B
produce nngn dato con respecto a estado de a undad
numrca y en consecuenca a pn BUSY.
)%* Dferenca entre as operacones nvdas causadas por e
desbordamento de a pa y por otras causas. S SF est
actvado e bt C1 dferenca entre un overfow (C1=1) y un
underfow (C1=0). Para una nterpretacn de cdgo C3-C0 de
una comparacn u operacones smares ad|untamos a taba
7.1.
Los cuatro +lags de condicin de cdigo (desde C0 a C3)
ndcan e resutado de operacones artmtcas y de
comparacn en coma fotante. Estos fags se usan
prncpamente para amacenamento de nformacn usada en
excepcones. E fag de condcn de estado C1 es usado para
gran varedad de funcones. Cuando, os bts IE y SF de a FPU
estn actvados, ndcando desbordamento de a excepcn
overfow o underfow (#IS), e fag C1 o dstngue de a
sguente manera: s esta a 1 overfow , sno underfow. Cuando
e fag PE de paabra de estado est actvado ndca que se ha
producdo un resutado nexacto (redondeo), e fag C1 es puesto
a 1 s os tmos redondeos han sdo descendentes. La
nstruccn FXAM actva C1 para examnar e vaor de sgno.
E bt de condcn de cdgo C2 es usado por as nstruccones
FPREM y FPREM1 para ndcar una reduccn correctamente (o resto
parca). Cundo se competa una reduccn competamente, os
fags de condcn de estado C0, C3 y C1 son actvados hacendo
referenca a os tres bts menos sgnfcatvos de cocente (O2, O1 y
O0 respectvamente).
Captulo 18 - 7
Captulo 18: Coprocesador matemtico (FPU)
Las nstruccones FPTAN; FSIN,FCOS y FSINCOS ponen e fag C2 a 1
para ndcar que e operando fuente est fuera de rango permtdo
(2
63
)
I,)T-&..I/, .0 .3 .2 .1
FCOM, FCOMP, FCOMPP, FICOM,
FICOMP, FTST, FUCOM, FUCOMP,
FUCOMPP
Resutados
de
comparaco
nes
Operandos no
Comparabes
0 #IS
FCOMI, FCOMIP, FUCOMI, FUCOMIP No defndas #IS
FXAM Case de operando Sgno
FPREM, FPREM1 O2 O1
0 = reduccn
competa
1 = reduccn
ncompeta
O0 #IS
F2XM1, FADD, FADDP, FBSTP,
FCMOVcc, FIADD, FDIV, FDIVP, FDIVR,
FDIVRP, FIDIV, FIDIVR, FIMUL, FIST,
FISTP, FISUB, FISUBR,FMUL, FMULP,
FPATAN, FRNDINT, FSCALE, FST, FSTP,
FSUB, FSUBP, FSUBR, FSUBRP,FSORT,
FYL2X, FYL2XP1
No defndo Roundup
#IS
FCOS, FSIN, FSINCOS, FPTAN No defndo
1 = operando
fuente fuera
de rango
Roundup
#IS (No
defndo s
C2=1)
FABS, FBLD, FCHS, FDECSTP, FILD,
FINCSTP, FLD, Constantes de Carga,
FSTP (ext. rea), FXCH, FXTRACT
No defndo 0 #IS
FLDENV, FRSTOR Cada bt se carga de a memora
FFREE, FLDCW, FCLEX/FNCLEX, FNOP,
FSTCW/FNSTCW, FSTENV/FNSTENV,
FSTSW/FNSTSW,
No defndo
FINIT/FNINIT, FSAVE/FNSAVE 0 0 0 0
Taba 18.1. Cdgos en coma fotante para e Pentum.
E* Precsn.
&E* Underfow.
OE* Overfow. 0 = No se produce
excepcn
1 = Condcn de excepcn
generada
Captulo 18 - 8
Captulo 18: Coprocesador matemtico (FPU)
1E* Dvsn por cero.
2E* Operando desnormazado.
IE* Operacn nvda.
Estos 6 fags ndcan que una o ms excepcones en coma fotante han sdo
detectadas desde que os bts fueron mpados por tma vez.
Estos fags de excepcon se pueden consderar un poco pega|osos, es decr,
permanecen actvados hasta que son expctamente mpados. Para eo se
utzan as sguntes nstruccones:
FCLEX/FNCLEX (excepcones de mpeza)
FINIT/FNINIT (renazan a FPU)
FSAVE/FNSAVE
FRSTOR o FLDENV (para sobreescrbr os fags)
18.2.# S"$ts % &'i&ie(ts )(!i)i("$es e( $" )(!i)i*( !e
)*!ig !e $" FPU
La arqutectura de a FPU de Inte (comenz con e procesador Pentum PRO)
posee dos mecansmos para satar y efectuar movmentos condconaes de
acuerdo con as comparacones de dos vaores en coma fotante. Estos
mecansmos se referen a "nuevo mecansmo" y "ve|o mecansmo".
E mecansmo ve|o est dsponbe a pror en a FPU de os procesadores
Pentum Pro. Este mecansmo usa nstruccones de comparacn en coma
fotante (FCOM, FCOMP, FCOMPP, FTST, FUCOMPP, FICOM Y FICOMP) para
comparar dos vaores en coma fotante y actvar os fag de condcn de
cdgo (C0, C3) de acuerdo con os resutados. Los contendos de a
condcn de cdgo son despus copados en os fags de estado de
regstro EFLAGS medante dos pasos como se puede ver en a fgura de a
sguente pgna.
1. La nstruccn FSTSW AX mueve a paabra de estado de a FPU
a regstro AX.
2. La nstruccn SAHF copa os 8 bts de ms peso, en os cuaes
estn ncudos os fags de condcn de cdgo, dentro de os 8
bts de menos peso de regstro EFLAGS


INSTRUCCION FSTSW AX
Captulo 18 - 9
REGISTRO AX
.O,2I.I/,
2E E)T32O
CODIGO FLAG
C0 CF
C1
(NONE)
C2 PF
C3 ZF
C
3
C
2
C
1
C
0
PALABRA DE ESTADO DE LA FPU
Captulo 18: Coprocesador matemtico (FPU)
REGISTRO EFLAGS
4 0
Fgura 18.5 Movmento de a condcn de cdgo a regstro EFLAGS
E mecansmo nuevo est soamente dsponbe en e procesador Pentum
Pro. Usando este mecansmo a nueva comparacn en coma fotante
compara y actva as nstruccones EFLAGS (FCOMI, FCOMP. FUCOMI, Y
FUCOMIP) que comparan dos vaores en coma fotante y actvan
drectamente os regstros EFLGS ZF, y PF. Una nca nstruccn susttuye
tres nstruccones requerdas en e ve|o mecansmo.
18.2.+ Registrs !e )(tr$
Estos regstros controan a precsn de a FPU y os mtodos de redondeo
usados. Tambn exsten unos bts que hacen posbe e enmascaramento
de excepcones. E contendo de estos regstros puede ser cargado con a
nstruccn FLDCW y amacenado en memora con a nstruccn
FSTCW/FNSTCW.
Cundo a FPU es ncazada con as nstruccones FINIT/FNINIT o
FSAVE/FNSAVE, a paabra de contro es puesta a 037FH, a cua enmascara
todas as excepcones en coma fotante, redondea haca e ms prxmo y
se actva a FPU con una precsn de 64 bts.
Fgura 18.6. Dstrbucn de os bts en a Paabra de Contro de coprocesador
matemtco.
Ba|o certas crcunstancas, e Pentum genera una excepcn de
coprocesador. Estas excepcones pueden ser ndvduamente
enmascaradas. Lo que es ms, podemos determnar dferentes modos para
precsn y redondeo. La Paabra de Contro se empea para este propsto,
y su estructura a mostramos en a fgura 18.4
I.* No tene sgnfcado cuando no mane|an vaores nfntos
porque e Pentum apca e estndar IEEE a as operacones con
coma fotante. En os terrenos de compatbdad con e 8087 y
e 80287 e bt IC est dsponbe pero no tene efecto.
Captulo 18 - 10
IC RC PC PM UM OM ZM DM
IM
C
3
C
2
C
1
C
0
Z
F
P
F
1 C
F
Captulo 18: Coprocesador matemtico (FPU)
E Pentum sempre mane|a cantdades nfntas en e sentdo de
, ncuso s ponemos IC a 0.
-.* Los dos bts RC controan e redondeo en e modo defndo.
5O2O 2E -E2O,2EO .35O
-.
Redondeo a ms cercano
00B
Redondeo haca aba|o
01B
Redondeo haca arrba
10B
Redondeo a cero
11B
Taba 18.2. Cdgos en coma fotante para e Pentum.
.* E campo de contro de precsn (bts 8 y 9 de a Paabra
de Contro de a FPU) determna a precsn (64, 53, o 24 bts)
de os ccuos en coma fotante reazados por a FPU. Controa
e redondeo en as nstruccones ADD, SUB, MUL, DIV y SORT.
-E.I)I/, .35O .
Precsn smpe (24 bts) 00B
Reservado 01B
Dobe precson (53-Bts) 10B
Precsn extendda (64-Bts)

11B
Taba 18.3. Taba de campo PC en reacn a a precsn.
56 &56 O56 156 25 e I5* Controan a generacn de una
excepcn cada uno y su nterrupcn resutante. Los Pentum
provocan 6 excepcones dferentes en sus operacones con
coma fotante. Podemos enmascarar as excepcones
ndvduamente empeando os bts PM, UM, OM ZM, DM e IM.
Entonces e Pentum e|ecuta una rutna estndar para tratar os
respectvos errores utzando un supuesto estndar. Esto es una
parte ntegra de chp.
18.2., F$"g !e )(tr$ !e i(-i(it
Captulo 18 - 11
Captulo 18: Coprocesador matemtico (FPU)
Este fag proporcona compatbdad con e coprocesador matemtco 287
de Inte; no es muy sgnfcante para versones posterores de a
arqutectura IA-32
18.2.. Registrs !e /"$"0r"
. La FPU usa os vaores de os tag para detectar desbordamentos en
condcones de overfow o underfow . Los desbordamento de overfow
ocurren cuando e puntero de campo TOP es decrementado para apuntar a
un regstro no vaco. Los desbordamentos de underfow se producen
cuando e puntero de campo TOP es ncrementado para apuntar a un
regstro vaco, o cuando un regstro vac es referencado como un
operando fuente. Un regstro no vaco vene defndo como un regstro que
contene vaor cero (01), vaor vdo (00), o vaor especa (10). Su
estructura a mostramos en a fgura 7.16. Tag
7
- Tag
0
contene nformacn,
que dentfca os contendos de os ocho regstros de datos R7-R0. E
coprocesador utza esta nformacn para reazar certas operacones a
una veocdad superor. Empeando este proceso, e Pentum puede
determnar muy rpdamente certos vaores como NAN, nfnto y sn a
necesdad de decodfcar e vaor de regstro correspondente. Medante as
nstruccones de FSTENV/FNSTENV podemos amacenar a Paabra Tag en
memora y examnara.
00 = VALIDO.
01 = CERO.
10 = NAN, INFINITO, VALOR DESNORMALIZADO O FORMATO DE NMERO
INVALIDO.
11 = LLENO.
Fgura 18.7 Dstrbucn de os bts en a Paabra Tag de coprocesador matemtco.
18.2.1 P2(ters !e i(str2))i(es % !"ts
La FPU amacena nstruccones a datos (operandos) e nstruccones para as
tmas nstruccones e|ecutadas que no son de contro. Estos punteros son
amacenados en dos regstros de 48 bts.
Hay que tener en cuenta que e vaor de un regstro puntero de dato es
sempre un puntero a un operando de memora. S as tmas nstruccones
no controadas que fueron e|ecutadas no contenan un operando en
memora, e vaor de regstro puntero de datos es ndefndo.
E contendo de os regstros de os punteros de nstruccones y datos
permanecen nvarabes cuando no se e|ecuta nnguna nstruccn de
contro. (FINIT/FNINIT, FCLEX/FNCLEX... etc).
Los punteros amacenados en os regstros de os punteros de nstruccones
y datos contenen un offset (amacenado en os bts de 0 a 31) y un
seector de segmento (amacenado en os bts de 32 a 47)
Captulo 18 - 12
Tag7 Tag6 Tag5 Tag4 Tag3 Tag2 Tag1
Tag0
Captulo 18: Coprocesador matemtico (FPU)
18.2.8 Registrs !e )*!ig
La FPU amacena e cdgo de as tmas nstruccones e|ecutadas que no
sean de contro en un regstro de cdgo de 11 bts. So e prmer y
e segundo byte de cdgo estn amacenados en e regstro de
cdgo de a FPU. La fgura muestra e amacenamentos de estos 2
bytes. Desde que os 5 bts de ms peso de prmer byte de cdgo
son os msmos para todos os cdgos de undad en coma fotante
(11011B), soo os tres bts de menos peso son amacenados en este
regstro de cdgo.
PRIMER BYTE DE LA INSTRUCCION SEGUNDO BYTE DE LA INSTRUCCION
7 2 0 7
0

Fgura 18.8 Contendo de regstro cdgo

18.#- TIPOS DE DATOS
E coprocesador puede obtener y escrbr datos en memora de os
sguentes tpos.
Entero* Words(16 bts), Dword(32 bts), Owords(64 bts)

-eal* Words(16 bts), Dword(32 bts), Owords(64 bts),
Twords(80 bts)
)imple precisin en coma +lotante
2o7le precisin en coma +lotante
2o7le precisin e8tendida en coma +lotante
Entero con signo
'.2
A contnuacn se muestra una taba de as excepcones que exsten en
dobe precsn en coma fotante.
Captulo 18 - 13
10 8 7
0
REGISTRO DE CODIGO
DE LA FPU
Captulo 18: Coprocesador matemtico (FPU)
E8cepcin .ausa 3ccin por de+ecto 9si la
e8cepcin est
enmascarada:
Invad Op.
Operacn sobre un Sgnang
NaN,
formato no soportado,
operacn
ndetermnada (0*nfnto, 0/0,
nfnto-nfnto, etc.), o
underfow/overfow de pa
E resutado es un Ouet
NaN,
un entero ndefndo o un
BCD
ndefndo.
Denormazed
Op.
A menos uno de os
operandos es
un Denorma, o sea, tene e
menor
exponente pero una mantsa
no-cero.
Contnua e proceso
norma
Zero Dvsor
E dvsor es cero mentras e
dvdendo es un nmero no
cero y
no nfnto.
E resutado es Infnto.
Overfow
E resutado es demasado
grande
para caber en e formato
especfcado.
E resutado es e mayor
nmero posbe o nfnto.
Underfow
E resutado es no-cero pero
es
demasado pequeo para
caber en e
formato especfcado, y s est
enmascarada a excepcn de
Underfow, a denormazacn
causa
prdda de precsn.
E resutado es un
denorma o
cero.
Resutado
Inexacto
(Precsn)
E resutado EXACTO no es
Representabe en e formato
Especfcado (p.e|. 1/3); e
resutado
es redondeado de acuerdo
con e
modo de redondeo.
Contnua e proceso
norma.
Taba 18.4 - Taba de excepcones
Captulo 18 - 14
Captulo 18: Coprocesador matemtico (FPU)
18.+- OR34ENES DE5 COPROCESADOR MATEMTICO EN E5
PENTIUM
Esta undad se ha redseado totamente respecto a a que se usa e
486. Sn embargo, mantene compatbdad 100% bnara con ea. Incorpora
un cauce segmentado de nstruccones de ocho etapas, que permte obtener
resutados partendo de nstruccones de coma fotante en cada cco de
reo|. Las cuatro prmeras etapas son as msmas que poseen as undades
de enteros. La qunta y a sexta, corresponden a a e|ecucn de as
nstruccones de coma fotante. La sptma etapa se encarga de escrbr e
resutado en os regstros adecuados y a octava reaza e nforme de
posbes errores que se hayan producdo.
Hace uso de nuevos agortmos que aceeran a e|ecucn de as
operacones e ncuye eementos de hardware dedcados, como son : un
mutpcador, un sumador y un dvsor. Instruccones de suma,
mutpcacn y carga de datos se e|ecutan tres veces ms rpdo que en un
486.
La Unidad en Coma Flotante o FPU integrada en el Pentium ampla el nmero de as
como el repertorio de instrucciones. Los nue!os registros "ue proporciona el
coprocesador son oc#o generales de 8$ %its cada uno & tres de 1' %its siendo (stos
ltimos empleados en la%ores de control & presentaci)n de estado.
18.,- INSTRUCCIONES
Estas son as nstruccones ms comunes, se omten agunas, por ser
poco comunes en e mundo de tempo-rea. Los ccos de reo| de as
nstruccones, son os decarados por Inte para e Pentum bsco, esto
puede verse aterado en as CPU's MMX, PRO y Pentum II. Cuaquer
nstruccn de ccuo (fadd, fsub, etc.) toman por defecto s no se e
especfca otros operandos St(0) y St(1).
Leyenda: rm=Modo Rea, vm=Modo Vrtua, pm=Modo Protegdo
I,)T-&..I/, E;E5<O .I.<O) 2E -E<O;
FABS fabs 1
FADD |reg,reg| fadd 3, 1
FADD memrea fadd shortrea 3, 1
Captulo 18 - 15
Captulo 18: Coprocesador matemtico (FPU)
FADDP reg,ST faddp st(6),st 3, 1
FIADD memnt fadd nt16 7, 4
FCHS fchs 1
FCLEX fcex 9+
FNCLEX fncex 9
FCOM fcom 4, 1
FCOMP fcomp 4, 1
FCOMPP fcompp 4, 1
FICOM memnt fcom doube 8, 4
FICOMP memnt fcomp darray|d| 8, 4
FCOS fcos 18-124
FDECSTP fdecstp 1
FDIV |reg,reg| fdv st(5),st 39
FDIV memrea fdv ongrea 39
FDIVP reg,ST fdvp st(6),st 39
FIDIV memnt fdv warray|d| 42
FDIVR |reg,reg| fdvr st(5),st 39
FDIVR memrea fdvr ongrea 39
FDIVRP reg,ST fdvrp st(6),st 39
FIDIVR memnt fdvr warray|d| 42
FFREE ST() ffree st(3) 1
FILD memnt fd quads|s| 3, 1
FINCSTP fncstp 1
FINIT fnt 16
FNINIT fnnt 12
FIST memnt fst doubes|8| 6
FISTP memnt fstp ongnt 6
FLD reg fd st(3) 1
FLD mem32rea fd ongrea 1
Captulo 18 - 16
Captulo 18: Coprocesador matemtico (FPU)
FLD mem64rea 1
FLD mem80rea 3
FLD1 fd1 2
FLDZ fdz 2
FLDPI fdp 5, 3
FLDL2E fd2e 5, 3
FLDL2T fd2t 5, 2
FLDLG2 fdg2 5, 3
FLDLN2 fdn2 5, 3
FLDCW mem16 fdcw ctrword 7
FLDENV mem fdenv |bp+10|
37, 16-bt pm=32,
32-bt pm=33
FMUL |reg,reg| fmu st(5),st 3, 1
FMULP reg,ST fmup st(6),st 3, 1
FIMUL memnt fmu warray|d| 7, 4
FNOP fnop 1
FPATAN fpatan 17-173
FPREM fprem 16-64
FPREM1 fprem1 20-70
FPTAN fptan 17-173
FRNDINT frndnt 9-20
FRSTOR mem frstor |bp-94|
16-bt rm or
vm=75;
32-bt rm or
vm=95;
pm=70
FSAVE mem fsave |bp-94|
16-bt rm or
vm=127+;
32-bt rm or
vm=151+;
pm=124+
FNSAVE mem fnsave |bp-94|
16-bt rm or
vm=127;
32-bt rm or
vm=151;
pm=124
Captulo 18 - 17
Captulo 18: Coprocesador matemtico (FPU)
FSCALE fscae 20-31
FSIN fsn 16-126
FSINCOS fsncos 17-137
FSORT fsqrt 70
FST reg fst st 1
FST memrea fst ongs|bx| 2
FSTP reg fstp st(3) 1
FSTP mem32rea fstp ongrea 2
FSTP mem64rea 2
FSTP mem80rea 3
FSTCW mem16 fstcw ctrword 2+
FNSTCW mem16 fnstcw ctrword 2
FSTENV mem fstenv |bp-14|
16-bt rm or
vm=50+;
32-bt rm or
vm=48+;
16-bt pm=49+;
32-bt pm=50+
FNSTENV mem fnstenv |bp-14|
16-bt rm or
vm=50;
32-bt rm or
vm=48;
16-bt pm=49;
32-bt pm=50
FSTSW mem16 fstsw statword 2+
FSTSW AX fstsw ax 2+
FNSTSW mem16 fnstsw statword 2
FNSTSW AX fnstsw ax 2
FSUB |reg,reg| fsub st,st(2) 3, 1
FSUB memrea fsub ongrea 3, 1
FSUBP reg,ST fsubp st(6),st 3, 1
FISUB memnt fsub doube 7, 4
FSUBR |reg,reg| fsubr st,st(2) 3, 1
FSUBR memrea fsubr ongrea 3, 1
Captulo 18 - 18
Captulo 18: Coprocesador matemtico (FPU)
FSUBRP reg,ST fsubrp st(6),st 3, 1
FISUBR memnt fsubr doube 7, 4
FTST ftst 4, 1
FUCOM |reg| fucom st(2) 4, 1
FUCOMP |reg fucomp st(7) 4, 1
FUCOMPP fucompp 4, 1
FWAIT fwat 1-3
FXAM fxam 21
FXCH |reg| fxchg st(3) 1
FXTRACT fxtract 13
FYL2X fy2x 22-111
FYL2XP1 fy2xp1 22-103
Taba 18.5. Instruccones

18..- 6IOSTORIA DE5 ERROR DE 5A FPU DE5 PENTIUM
E 30 de octubre de 1.994, e doctor Thomas R. Ncey, profesor de
Matemtcas de Lynchburg Coege de Estado de Vrgna (U.S.A.), envaba
un mensa|e medante correo eectrnco a Andrew Schuman, coautor de
bro Undocumented DOS y autor de Undocumented Wndows (ben
conocdos por os programadores de sstemas, por tratar de nterrupcones y
opcones dversas no documentadas de estos sstemas) como uno ms de
os comentaros o nformacones sobre este tpo de asuntos que Andrew
soctaba que e envaran por este procedmento.
En e mensa|e, e doctor Ncey e comuncaba que mentras
nvestgaba con e programa Matab sobre nmeros prmos eevados con un
Pentum, observ que ste e do un resutado errneo a una determnada
operacn de dvsn con punto fotante, o que nduca a pensar en un error
en a FPU (Foatng Pont Unt, Undad de punto fotante o coprocesador) de
Pentum, por resutar correcta dntca operacn en os 486. Andrew env
copa de mensa|e a Rchard Smth, de a casa de software Phar Lap, para
que pudese comprobar e fao en agn equpo Pentum, de os que no
dspona. Hecho esto, y a a vsta de a mportanca que podra tener e
asunto, o notfc pbcamente a noche de 1 de novembre en e frum de
dscusn Canopus de Compuserve. Las pruebas se mutpcaron, y
sencamente desde a cacuadora de Wndows, resutaba fc constatar
que as matemtcas no eran exactas, a menos para e Pentum. Poco
despus Aex Wofe, de a revsta Eectronc Engeneerng Tmes, se
nteresaba por a nota que apareca en Canopus y, comprendendo su
mportanca, pubc e prmer artcuo escrto sobre e error, en a prmera
Captulo 18 - 19
Captulo 18: Coprocesador matemtico (FPU)
pana de a edcn de 7 de novembre de a revsta. Antes, notfc o que
estaba nvestgando a Ter|e Mathsen, de Noruega, quen estaba escrbendo
en USENET sobre as nstruccones de Pentum, y ste hzo pbco e error
e 3 de novembre en e grupo comp.sys.nte de USENET. Una vez aqu, Tm
Coe, de Vtesse Semconductor, ogr descrbr correctamente cmo se
produca e error y efectu predccones correctas sobre qu pares de
nmeros o ocasonaran. E error sgu sendo dscutdo en este foro, y
desde ah se conoc en toda Internet, a mayor red de ordenadores que
ega a grandes partes de mundo, y precursora de a no muy e|ana
Autopsta de a Informacn, o cua supone habar de una audenca de
ventcnco mones de personas en a actuadad (en constante
crecmento). He aqu cmo a nformacn se ha transmtdo, sempre en
forma de bytes y a travs de os cabes, hasta egar a nuestros odos. Pero
qu es exactamente o que faa? En trmnos prctcos, e error consste en
que se redondean ma os dgtos decmaes desde e cuarto a
decmonoveno en determnadas dvsones en coma fotante: a precsn de
a respuesta es mucho menor de a esperada. Esto se produce
ndependentemente de a precsn, smpe, dobe o extendda, de os
nmeros; tampoco depende de a veocdad de chp, n de as nstruccones
prevas, n de modo de redondeo. E fao resde en a undad de dvsn de
a FPU, y por tanto cuaquer nstruccn que a utce puede mostrar e
error; no so a conocda FDIV, sno otras ndcadas por Inte, como FPTAN,
FPATAN (tangente y arcotangente en punto fotante), FYL2X, FYL2XP1
(ogartmos) y a nstruccn de resto; en cambo, no faan e seno n e
coseno, entre otros.
La causa fna de error es, obvamente, humana: e ovdo de unas
cuantas entradas en una taba de consuta empeada por a undad de
dvsn. La dvsn en punto fotante en a mayora de os
mcroprocesadores, como e Pentum, se reaza usando un agortmo smar
a de a ca|a que todos aprendmos en e coego, y que, como aqu,
produce un bt en cada cco de a operacn. Adconamente, e Pentum
posee un sstema de optmzacn que e permte deducr dos bts en cada
cco, usando en un determnado punto de a dvsn os restos de
dvdendo y de dvsor como ndces a una taba de consuta de donde
obtene os sguentes dos bts. S desafortundamente esos restos evan a
una de as entradas que fatan en a taba, se obtenen os dos bts
ncorrectos, y e resto ya se sabe... dos bts que han dado a vueta a mundo
nformtco. Concretamente, IBM ha ndcado que as secuencas de bts
pegrosas son stas: 10001, 10100, 10111, 11010 y 11101, segudas por
una cadena de a menos 20 unos.
De o anteror se deduce que e error sucede sempre a dvdr pares de
nmeros concretos. S dos nmeros faan, o harn sempre que se repta a
prueba; s no es as, nunca darn probemas. En tota, consderando so os
casos de nmeros de smpe precsn con una exacttud en e resutado
nferor a a smpe precsn, so parecen exstr 1.738 pares que producen
e error, y so 87 con una precsn de cuatro dgtos decmaes. Dada a
naturaeza de error, hay que aadr a estos nmeros todos os obtendos a
mutpcar o dvdr a uno o ambos nmeros de par por una potenca de
dos, y/o cambare e sgno, ya que e error o determnan as secuencas de
bts en as mantsas, con o que os nmeros de gua mantsa han de ser
consderados un nco caso. Para a dobe precsn, os casos se
mutpcan, y ms an s aumentamos a precsn requerda a resutado,
pero a msmo tempo a posbdad de encontrar un error con esos nmeros
dsmnuye rpdamente.
Captulo 18 - 20
Captulo 18: Coprocesador matemtico (FPU)
18...1 M"(tis"s7 e8/(e(tes % /re)isi(es
E Pentum, como e resto de os mcroprocesadores, empea e
standard IEEE 754 para representar nmeros en punto fotante. Este tpo
de amacenamento transforma os nmeros reaes a formato
sgno*1.XXX*2YYY, es decr, uno ms una fraccn, mutpcado por una
potenca de dos, |unto con e sgno. E XXX se denomna mantsa; YYY es
e exponente.
E standard IEEE defne e nmero de smpe precsn como aqu
que tene una mantsa de 23 bts. Esto proporcona una precsn de 24
bts (contando e prmer bt) o que equvae a aproxmadamente 7
dgtos decmaes. Un nmero de dobe precsn tene una mantsa de
52 bts, unos 15 dgtos decmaes. La mantsa en a precsn extendda
tene 63 bts, es decr, se puede obtener una precsn de
aproxmadamente 18 decmaes.
Para os programadores en C, una varabe foat es de smpe
precsn, mentras que un doube tene dobe precsn y un ong doube
suee tener precsn extendda (aunque no todos os compadores
soportan esta tma opcn).
18...2 C(ti(2"(! )( e$ errr
Para comprobar s un Pentum tene e error, basta efectuar con
cuaquer software de cacuadora u ho|a de ccuo, a dvsn de aguno de
os pares de nmeros afectados (vase e|empo ad|unto). Comparando os
resutados con os reaes, veremos dferencas a partr de cuarto dgto
decma. Sn embargo, es posbe obtener un resutado ms escandaoso a
efectuar a operacn x - (x/y) * y con os nmeros afectados. Esta
operacn, como es fc ver, resuta cero para cuaquer x e y tomados; sn
embargo, una operacn efectuada en un Pentum con os x e y adecuados,
devover un nmero dstnto de 0. S e resutado es errneo, est caro que
tenemos e ; s no o es, deberemos asegurarnos de que e programa
empeado utza as nstruccones FDIV y smares para obtener e
resutado, o cua no es sempre seguro, aunque se sabe que o es para a
Cacuadora de Wndows y a ho|a de ccuo Exce; por tanto e resutado de
a prueba efectuada en estos programas es nfabe con respecto a . Por
otra parte, aunque se han desarroado ya numerosas soucones por
software para corregro, no exsten parches para actuazar os bnaros de
os programas que puderan efectuar as operacones prohbdas ; so cabe
esperar que as respectvas casas de software ntroduzcan en e mercado
una nueva versn con a eve correccn pertnente, y de momento utzar
dchos programas resdentes para a correccn.
S adems de este mtodo casero queremos nformacn adcona a a
smpe verfcacn de error, podemos empear e programa P87TEST.ZIP de
antes menconado Ter|e Mathsen, dsponbe en e G.U.I. Es muy de esperar
que e resutado sea postvo, ya que so un nfmo porcenta|e de entre os
prmeros Pentum aparecdos carecan de error.
/*Este programa dar cero en cualquier procesador que no sea
Pentium, que dar 256.*/
main() double x,,!"
Captulo 18 - 21
Captulo 18: Coprocesador matemtico (FPU)
x #$%&5'(5,)" # (%$5*2*.)"
! #x+(x/)*"
print,(-.esultado/ 0,1n-, !)"
2
Inte, tras efectuar sete bones de dvsones aeatoras, ndc que e
error se produca en una de cada nueve m mones, partendo de nmero
de casos errneos encontrados. E tpo de ccuos que reacemos afectar,
sn duda, a a probabdad de toparnos con un error, pero, con este dato,
podramos efectuar e sguente razonamento: S e|ecutamos una
nstruccn FDIV constantemente en un Pentum-90, a durar cada
nstruccn 39 ccos (segn documenta Inte) y dsponer de un reo| de 90
MHz, esto es, 90 mones de ccos, se efectuaran 2.307.692 dvsones cada
segundo, y ms de ocho m mones cada hora. De esta forma, a cabo de
poco ms de una hora se obtendra un error. Naturamente, estas
crcunstancas son mposbes. La estmacn reasta de Inte es a sguente:
reazando, con una ho|a de ccuo, 1.000 dvsones de promedo a da,
so obtendremos un error a os 27.000 aos.
Pero sn tener en cuenta a frecuenca de error, o mportante aqu es a
respuesta que Inte pueda dar a sus usuaros suspcaces. En esto Inte no
puede ser aabada. Sus propos tcncos descubreron e error ya en |uno,
pero o mnmzaron, pensando que defectos os hay en todo procesador aun"ue
de ma&or o menor importancia & "ue (ste no egara a sar a a uz, por o que no
crey convenente aertar a os cas dos mones de usuaros de aque
entonces (fue un grave error por su parte no tener en cuenta as eyes de
Murphy). Despus, a a vsta de as crcunstancas, trat de enmendarse,
hacendo pbca una descrpcn tcnca de error y ofrecndose a susttur
os chps errneos: env un fax a dstrbudores de todo e mundo, cuyo
contendo reproducmos en e recuadro ad|unto, y que resuta cuanto menos
poco sero para con os usuaros, pues ndca que decde susttur e
procesador defectuoso debdo a un error que sucede cada 27.000 aos.
Inte asegura haber reservado una partda mportante de sus benefcos a o
argo de cuarto trmestre de ao para a operacn de susttucn, a a vez
que afrma haber corregdo ya e error en todos os nuevos Pentum s
fabrcados desde a tma semana de Dcembre. A pesar de esto, os
comercos (a menos en Vaadod) no estn recbendo Pentum s
corregdos con reguardad, dado que a pesar de o que se fabrque en
Tawan, o que traga e dstrbudor a Espaa puede ser ben dferente.
La trascendenca de error, a pesar de su dfusn a travs de Internet, no
hubera egado a tanto de no haberse producdo a reaccn de IBM. E
ggante azu sgue sendo e vendedor ms mportante de PCs, y por eo e
hecho de que decdera, a medados de dcembre, retrar sus equpos con
Pentum de mercado, supuso un fuerte mpacto a nve empresara. IBM
adu|o que su Dvsn de Investgacn, una vez a corrente de fao, ndc
que, an sendo certos os datos tcncos sobre a naturaeza de error, as
stuacones de resgo podan ser mucho ms numerosas que as ndcadas
por Inte. De hecho, segn IBM, as estmacones de Inte faaban en sus
bases, ya que una ho|a de ccuo puede efectuar 5.000 dvsones cada
segundo. Traba|ando una meda de 15 mnutos daros en una ho|a de
ccuo, eo supondra un error cada 24 das, o o que es gua, a daro en
una empresa con 24 ordenadores. Pero IBM no convenc a resto de
fabrcantes, que se han agrupado en torno a Inte, restando mportanca a
error y confando en a marca. Todos afrman haber contnuado con
normadad sus ventas tras expcar a stuacn a sus centes, e ncuso
agunas marcas dcen haber rebasado sus expectatvas sobre e Pentum.
Captulo 18 - 22
Captulo 18: Coprocesador matemtico (FPU)
Hay reamente segundas ntencones en a decsn de IBM? E hecho
nnegabe es que IBM est nmersa en a estratega PowerPC. Para quenes
no tengan muy caro de qu se trata, dr rpdamente que PowerPC
sgnfca Performance Optmzed Wth Enhanced Rsc-Persona Computer
(est caro que este tpo de acrnmos son de agrado de todos os
angosa|ones), y se trata de una nueva fama de mcroprocesadores, no
compatbes con os de Inte, que est sendo desarroada por IBM, Appe y
Motoroa, y que Appe e IBM ncurn en equpos que, hasta a fecha, no son
compatbes en software. Appe ya ha comercazado equpos PowerMac,
adems de ofrecer a todos os usuaros de os procesadores 680x0 de
Motoroa una fc actuazacn a PowerPC. Una de sus caracterstcas ms
mportantes es que ofrecen una computacn RISC (Reduced Instructon Set
Computng) frente a a CISC (Compex Instructon Set Computng) de os
equpos Inte hasta e 80486, sendo Pentum una soucn ntermeda entre
ambos mtodos..
Captulo 18 - 23

S-ar putea să vă placă și