Punto Flotante
Punto Flotante
Punto Flotante
Tesis de Mster
Diseo e Implementacin de Operaciones Aritmticas en
Punto Flotante Decimal segn el Estndar IEEE 754-2008
Pgina ii
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
Agradecimientos
Quiero agradecer a mis padres, a pesar de estar separados siempre me alientan para seguir
adelante, a mis hermanos que son el impulso que necesito, a Esteban mi primer sobrino y al
amor de mi vida Esperanza.
Pgina iii
NDICE
1
INTRODUCCION ......................................................................................................... 1
1.1
Motivacin..................................................................................................................... 1
1.2
Objetivos ....................................................................................................................... 2
2.1
2.2
2.3
2.4
2.5
2.6
3.1
3.2
3.3
3.4
3.5
3.6
3.6.1
3.6.2
3.6.3
3.7
3.8
3.9
4.1
4.2
5.1
5.2
5.3
5.4
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
NDICE DE FIGURAS
Figura 2.1
Figura 2.2
Figura 2.3
Figura 2.4
Figura 2.5
Figura 2.6
Figura 3.1
Figura 3.2
Figura 3.3
Figura 3.4
Figura 3.5
Figura 3.6
Figura 3.7
Figura 3.8
Figura 3.9
Figura 4.2
Figura 5.1
Figura 5.2
Figura 5.3
Figura 5.4
Figura 5.5
Figura 5.6
Figura 5.7
Figura 5.8
Figura 5.9
Figura 5.10 Speed up de las aplicaciones con Cache implementada en DDRAM .................. 52
Pgina v
NDICE DE TABLAS
Tabla 2.1 Tabla sobre los formatos intercambiables soportados estndar IEEE 754-2008 ....... 5
Tabla 3.1 Cantidad de bits de los campos que forman un nmero DFP IEEE 754-2008 .......... 13
Tabla 3.2 Posicin de los bits en los campos que forman un nmero DFP IEEE 754-2008 ..... 13
Tabla 3.3 Posibles correcciones a la suma mod 16 ................................................................... 27
Tabla 3.4 Modelos de redondeo ................................................................................................. 32
Tabla 3.5 Contribucin en rea de los mdulos involucrados en el diseo............................... 33
Tabla 3.6 Resultados del sumador sintetizado/implementado en Virtex-5 ................................. 33
Tabla 3.7 Latencias de un sumador DFP implementado en diferentes plataformas.................. 34
Tabla 3.8 Resultados del sumador BID en [7] y el sumador propuesto ................................... 34
Tabla 4.1 Coste de rea en un multiplicador DFP .................................................................... 38
Tabla 4.2 Comparacin de multiplicadores DFP ...................................................................... 39
Tabla 5.1 Ciclos de trabajo y speed-up de una solucin HW y SW para la suma .................... 46
Tabla 5.2 Ciclos de trabajo y speed-up de una solucin HW y SW para la multiplicacin ...... 46
Tabla 5.3 Ciclos de reloj utilizados por el BUS FSL ................................................................. 46
Tabla 5.4 Ciclos de trabajo de la suma usando memorias Cache ............................................. 48
Tabla 5.5 Ciclos de trabajo de la multiplicacin usando memorias Cache ............................... 49
Tabla 5.6 Nmero de multiplicaciones y sumas en las pruebas realizadas ............................... 51
Tabla 5.7 Ciclos de trabajo de aplicacin Telephone Billing .................................................... 51
Tabla 5.8 Ciclos de trabajo de aplicacin Telephone Billing con memorias Cache ................. 51
Pgina vi
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
1 INTRODUCCION
1.1 Motivacin
Los ordenadores representan, almacenan y manipulan datos numricos en formato binario.
Muchas aplicaciones comerciales como anlisis financiero, transacciones bancarias, clculo de
tasas, y operaciones contables son realizadas mediante operaciones aritmticas binarias lo cual
introduce un determinado error de precisin al convertir un nmero decimal a binario y
viceversa. Por este motivo la aritmtica decimal surge como alternativa para contrarrestar la
prdida de precisin.
Debido a la importancia de la aritmtica decimal, surgi una revisin borrador (IEEE 754r) del
estndar para aritmtica en punto flotante. Diferentes especificaciones incorporadas al IEEE
754r han originado el nuevo estndar IEEE 754-2008 [1]. Una operacin fundamental en
aritmtica DFP es la multiplicacin debido al amplio rango de aplicaciones que posee, por eso
en los ltimos aos varios diseos de multiplicacin decimal en punto fijo y flotante han sido
propuestos con diferentes resultados manteniendo un compromiso entre parmetros como
latencia y rea. Por eso estudiar y proponer novedosas alternativas de multiplicaciones en
formato DFP resulta atractivo para encontrar adecuados compromisos de diseo.
bloques segmentados (pipeline) de modo que podamos optimizar la performance del sistema.
Este trabajo proporciona anlisis, mtrica, aplicabilidad y metodologa de diseo para el
desarrollo de algoritmos que implementen las operaciones en aritmtica decimal de suma, resta
y multiplicacin sobre hardware reconfigurable (FPGAs) en trminos de rea y velocidad.
1.2 Objetivos
El trabajo se puede dividir en dos objetivos fundamentales:
Pgina 2
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
Una mejor solucin es reservar un conjunto de bits, E, para codificar una posicin dinmica ith
observada en la figura 2.1. En 64 bits podemos usar 6 bits para codificar la posicin de cada bit
dejando espacio para casi 17 dgitos decimales, D, como se observa en la figura 2.2. En notacin
matemtica es equivalente a D.2 E.
Desafortunadamente esta representacin es corta para nmeros en notacin cientfica que van
desde 2 -58 hasta 2 58-1 (aproximado a 10 17) e inadecuado para clculos cientficos. Observando
la notacin matemtica podemos solucionar el problema aumentando ms bits a la posicin E y
considerando signo. De esta manera el rango dinmico puede ser incrementado generando
mayor exactitud en representaciones numricas. Lo explicado justifica el uso de nmeros en
punto flotante y los estndares actuales muestran un buen trade-off entre precisin y exponente.
Algoritmos de redondeo: varios mtodos pueden ser usados por los nmeros durante las
operaciones.
El nuevo estndar IEEE 754-2008 especfica formatos para representar nmeros binarios en
punto flotante (BFP) y decimal en punto flotante (DFP). La diferencia entre ambas proviene no
solo de la base utilizada sino tambin de la normalizacin de las mantisas, el BFP se normaliza
con el punto decimal a la derecha del bit ms significativo (MSB) mientras el DFP solo se
representa por decimales. El DFP es representado en formatos intercambiables de 32, 64 y 128
bits. Un nmero DFP es representado por un signo, un exponente E que es normalizada a un
exponente desplazado (biased exponent) q, y un significando o mantisa M con p dgitos de
precisin. El valor de un nmero DFP D es representado como:
D=-1S x M x 10q,
q=E - bias
(1)
Pgina 4
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
El campo T formado por J10 bits y contienen los p-1 dgitos codificados de la mantisa
M. La codificacin consiste en Densely Packed Decimal (DPD) [1] que comprime 3
dgitos decimales (12 bits) en 10 bits. Un Declet est representado por los 10 bits
anteriores, lo que significa que J es el nmero de Declets que dispone el campo T. La
relacin entre la cantidad de dgitos decimales y J esta dado por p=3J+1.
Tabla 2.1 Tabla sobre los formatos intercambiables soportados estndar IEEE 754-2008
Al estar normalizado, es decir expresado en formato punto flotante decimal (DFP), se observan
las posiciones de los bits que posee cada campo:
El campo exponente dispone de 6 bits, empezando por el bit 25 y finaliza en bit 20.
Pgina 5
Si los 5 bits MSB de G son 110xx o 1110x entonces d 0 est determinado como 8+G 4 .
Si los 5 bits MSB de G son 0xxxx o 10xxx, entonces el d 0 est determinado como
4G 2 +2G 3 +G 4 .
Cabe sealar que si la precisin es exacta, o sea si nuestro resultado final posee 16 dgitos
normalizados, entonces GD, RD y SB son nulos.
Mencionaremos tambin algunas excepciones que son consideradas en los diseos propuestos:
Overflow y underflow.
Pgina 6
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
En el trabajo y como nomenclatura nombraremos las mantisas como MAX, MBX con sus
respetivos exponentes EAX, EBX, tambin existen nombres como EX, GDX, RDX y nombres
adicionales con terminacin en un dgito X. La letra X es un nmero que denota la entrada y la
salida de diferentes mdulos. Encontramos tambin smbolos como (N) Z T que se refiere Tth
bit de el dgito Zth en un nmero N, donde el menos significativo bit/dgito tiene el ndice 0. Por
ejemplo, (A1) 2 5 es el quinto bit del segundo dgito BCD de un numero A1. A1puede representar
entrada a un mdulo y A2 es la salida del mismo.
Realizacin de las operaciones de suma o resta en punto fijo con las mantisas.
Los signos y la operacin generan la operacin efectiva a realizar (EOP), esta seal es calculada
como:
EOP=SA xor SB xor OP
(2)
Debemos indicar que la operacin suma/resta es controlada por EOP, cuando EOP = 0 la suma
es procesada caso contrario ejecutamos la resta. Luego la etapa LZD normaliza las mantisas
Pgina 7
(MA0, MB0) y los exponentes (EA0, EB0) eliminando los ceros iniciales y actualizando las
seales MA0, MB0, EA0 y EB0. Este proceso genera nuevas mantisas (MA1, MB1) y exponentes
(EA1, EB1). La etapa swapping intercambia las mantisas y sus respectivos exponentes solo si
EA1 < EB1, esta etapa produce como salidas: mantisas actualizadas MA2 (posee el mayor de los
dos exponentes), MB2 (posee el menor de los exponentes), un exponente E2 = max (EA1, EB1),
una seal SWAP para indicar la presencia de un proceso swapping.
Para realizar la suma decimal debemos alinear ambas mantisas de acuerdo al punto decimal,
para esto analizamos los exponentes: recordemos primeramente que trabajamos con mantisas
normalizadas MA2, MB2 y con el exponente E2, ahora debemos desplazar MB2 a la derecha de
MA2 una cantidad de dgitos que es definido por la diferencia absoluta Ed=|EA1-EB1| y
designado como RSA (shifting right amount). Lo explicado garantiza la alineacin de las
mantisas para la suma correcta. La siguiente etapa (shifting right) realiza el desplazamiento a la
derecha de MB2 una cantidad de RSA dgitos generando MB3. La cantidad RSA debe estar
limitado a un rango de valores de 0 a p+2 (recordemos que p representa los dgitos de
precisin), el lmite superior de RSA posee dos dgitos adicionales para poder predecir y
computar el GD y RD que son utilizados en la etapa de redondeo. Aparte de generar el GD y
RD, registramos un dgito adicional para el caso de suma con overflow por tal razn MB3
contiene 19 dgitos. La etapa shifting right tambin genera una seal que predice el correcto
sticky-bit a utilizar, esta seal se denomina predicted sticky-bit (PSB).
Luego el mdulo pre-signal generation captura como entrada MA2, MB3, EOP y PSB y a partir
de ellas genera las siguientes seales: el acarreo de inicio (CIN) del sumador BCD decimal, la
seal AGTB que verifica si MA2>MB3 que es muy usada cuando la operacin es resta
(EOP=1), el dgito de guarda inicial (GD1), el dgito de redondeo inicial (RD1) y un dgito
extra (ED) usado en casos de sumas con overflow. Paralelamente el 16-BCD Adder procesa los
sumados MA2 y los 16 MSD de MB3, la operacin EOP, el acarreo CIN y la seal AGTB. El
BCD Adder genera una suma parcial de 16 dgitos con su respectivo acarreo de salida (COUT).
La etapa post-correction produce los valores finales para los dgitos de guarda y redondeo
(GD2, RD2) y el sticky-bit final (FSB), la suma parcial y el exponente E2 son tambin
corregidos (designados como S2 y E3 respectivamente) y listos para ser procesados por la etapa
de redondeo. La etapa rounding captura las salidas (FSB, GD2, RD2, S2, E3) de la etapa previa
y ejecuta el redondeo y produce la suma y el exponente final. Mencionemos que el signo final es
determinado por la siguiente operacin:
(3)
Finalmente el mdulo codificacin recibe las seales finales del signo, exponente y suma
transformndolos a la suma final expresada en formato IEEE 754-2008. Esta etapa tambin
maneja los casos especiales. El algoritmo siguiente muestra un ejemplo general de lo explicado.
Pgina 8
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
Algoritmo 1 Ejemplo para una suma Decimal Punto Flotante IEEE 754-2008
MA0[27 .. 0] = 0005678, EA0=-5, SA=0
MB0[27 .. 0] = 0000478, EB0=-7, SB=1
OP=1
EOP=SA xor SB xor OP=0
Etapa Leading zero detection
LZDA=LZD(MA0)=3 y EA1=EA0-3=-8
LZDB=LZD(MB0)=4 y EB1=EB0-4=-11
MA1=5678000
MB1=4780000
Verificar swapping
Como EA1=-8>EB1=-11 entonces SWAP=0
ED=|EA1-EB1|=3 y E2=max(EA1-EB1)=-8
MA2=MA1
MB2=MB1
Etapa Shifting right
SRA=ED=3, MB3=0004780 & 0 & 0 & 0
Etapa suma (EOP=0)
MB2=5 6 7 8 0 0 0
MB3=0 0 0 4 7 8 0 0 0 0
---------------------------------------------S1=5 6 8 2 7 8 0 0 0 0
Generacin seales
GD=S1[11 .. 8]=0
RD=S1[7 .. 4]=0
Sticky-bit = (S1[3] or S1[2] or S1[1] or S1[0])=0
Redondeo
Analizamos los parmetros GR, RD y Sticky-bit y aplicamos el modelo de redondeo seleccionado.
Resultado
Suma final[27 .. 0]=5682780, Exponente fina=E2=-8, Signo final=0
Pgina 9
O P A = {S A , E A 0 , M A 0 }
O P B = {S B , E B 0 , M B 0 }
N o r m a liz a c i n
M A 1 = L Z D ( M A 0 ) , E A 1 = v a lo r c o r r e g id o d e E A 0
M B 1 = L Z D ( M B 0 ) , E B 1 = v a lo r c o r r e g id o d e E B 0
S w a p p in g
si
EA1 < EB1
M A2 = M B1, E2 = EB1, M B2 = M A1
R S A = A B S |E B 1 - E A 1 |
no
M a x im o v a lo r d e R S A = p + 2
( p = r e s o lu c i n e n d g ito s d e l fo r m a to )
D e s p la z a m ie n to a la d e r e c h a ( S h iftin g
R ig h t)
M B 3 = D e s p la z a m ie n to d e M B 2
D e te r m in a c i n d e l P S B
P r e - S ig n a l C o r r e c c i n
P r e d ic e lo s v a lo r e s p a r a D G , R D y S B
C lc u la e l c a r r y d e e n tr a d a a l s u m a d o r y
v e r ific a s i M A 2 > M B 3
S u m a d o r d e 1 6 d g ito s B C D
S1= M A2 + M B3
P o s t - C o r r e c c i n
C a lc u la lo s v a lo r e s e x a c to s p a r a G D , R D y S B
A c tu a liz a la s u m a S 1 y e l e x p o n e n te E 2
R edondeo
H a lla lo s v a lo r e s fin a le s p a r a e l e x p o n e n te , s ig n o y
sum a
S ig n o F in a l, E x p o n e n te F in a l y S u m a F in a l e s
c o n v e r tid o a l e s t n d a r IE E E 7 5 4 - 2 0 0 8
Redondeo.
En base a estos puntos explicaremos el esquema adoptado. La estrategia usada considera parte
del modelo propuesto en [12]. Los mdulos que forman la operacin de multiplicacin son:
decodificador (decoder IEEE 754-2008), deteccin de ceros principales (leading zero deteccion,
Pgina 10
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
LZD), multiplicacin punto fijo BCD de 16 dgitos (16-BCD multiplier), redondeo (rounding) y
finalmente la etapa codificador (coder IEEE 754-2008).
La lectura de publicaciones [8] [19] [12] nos permiti seleccionar diseos de ptimo
performance y es la base del esquema propuesto. El multiplicador empieza capturando dos
operandos (OPA, OPB) expresado en formato decimal64 IEEE 754-2008 y luego descompone
ambos nmeros en sus respectivos signos (SA, SB), exponentes (EA, EB) y mantisas (MA, MB).
Recordemos que el tamao en bits de los dos ltimos depende si trabajamos con decimal64 o
decimal128. La normalizacin de los operando remueve los ceros iniciales, este proceso es
llevado a cabo por la etapa LZD generando las nuevas mantisas MA1, MB1 y actualizando los
exponentes EA1 y EA2. EL mdulo LZD garantiza tambin normalizacin en el resultado de la
multiplicacin final. Luego se desarrolla una multiplicacin BCD de 16 dgitos y resulta el
producto IP (IP=MA1xMA2, conocido como producto intermedio) con una dimensin de 32
dgitos BCD, desde IP debemos producir una expresin de 16 dgitos para poder operar en el
estndar decimal64. En la etapa de redondeo se capturan los 16 dgitos MSD de IP, como dgito
de guarda considera el dgito siguiente al LSD del producto intermedio IP, como digito de
redondeo toma el dgito siguiente a GD y como sticky-bit se realiza una operacin OR con todos
los bits restantes. Luego se procesa redondeo seleccionado, esto produce la multiplicacin
correcta P que junto al signo final (SF=SA xor SB) y al exponente final (E=EA1+EA2)
representan las seales necesarias para ser codificadas al formato IEEE 754-2008. Las seales
SF, E, y P codificadas generan el resultado final de la multiplicacin DFP IEEE 754-2008. Los
casos especiales son detectados tanto en la etapa de decodificacin como codificacin, y son
realizados paralelamente a la multiplicacin.
En la figura 2.6 representamos en forma general el esquema propuesto.
Normalizacin
MA1 = LZD (MA0), EA1=valor corregido de EA0
MB1 = LZD (MB0), EB1=valor corregido de EB0
Redondeo
Halla los valores finales para el exponente , signo y
producto
Pgina 11
Como aplicaciones de sistemas SoC sobre FPGA se menciona: diseo de una unidad aritmtica
decimal sobre FPGA; networks on-chip (NOC) implementadas sobre FPGA como en [11];
aceleracin para procesamiento de grficos 3D basado en SoC sobre FPGA [13]; aceleracin
para clculos matemticos como la DWT (direct wavelet transform) mediante SoC en FPGA [2];
evaluacin de operaciones en punto flotante en un soft-processor Rockwells 8bit core 6502
sobre FPGA, los resultados obtenidos son comparados con los procesadores 8051 y PICs
confirmando la mayor flexibilidad del FPGA/soft-processor [16]; otra aplicacin desarrolla la
transformada directa coseno en el soft-core processor Microblaze, mostrando la performance
de una solucin software contra una solucin HW/SW, se confirma que la Interface FSL del
Microblaze mejora la performance reemplazando tiempos crticos por hardware [21].
Se puede mencionar otras aplicaciones sobre FPGAs como en la publicacin [28] que propone
diseos de sumadores/restadores decimales basados en LUTs sobre Virtex-5; en [18] se
presenta un multiplicador en decimal64 IEEE 754-2008 desarrollado sobre Virtex-4; en [24] se
propone alternativas de multiplicadores decimales (combinacionales y secuenciales) con
aceptable trade-off rea/latencia; en [20] se presenta un multiplicador decimal64 IEEE 7542008 en arquitectura paralela como pipeline as como sus respectivas comparaciones de tradeoff rea/latencia, la verificacin es realizada sobre una NIOS II en Altera Cyclone II FPGA.
Pgina 12
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
Signo
campo combinacional
continuacin exponente
continuacin mantisa
Decimal32
1
5
6
20
Decimal64
1
5
8
50
Decimall28
1
5
12
110
DecimalN
1
5
e_lim
m_lim
Tabla 3.1 Cantidad de bits de los campos que forman un nmero DFP IEEE 754-2008
La siguiente tabla 3.2 muestra la posicin de los bits involucrados en los campos que componen
la representacin decimal.
Signo
Decimal 32
31
Decimal 64
63
Decimal 128
127
Decimal N
N-1
campo combinacional
30 .. 26
62 .. 58
126 .. 122
N-2..N-6
continuacin exponente
25..20
57..50
121..110
continuacin mantisa
19..0
49..0
109..0
N-7..m_lim
N-7..N-6-e_lim
m_lim-1..0
N-7-e_lim..0
Tabla 3.2 Posicin de los bits en los campos que forman un nmero DFP IEEE 754-2008
La figura 3.1 muestra el circuito propuesto para la suma/resta DFP. Los bloques sombreados
representan los mdulos principales del sistema, las lneas punteadas representan las 8 etapas de
pipeline del circuito propuesto.
Pgina 13
LEGEND
MA0 = Mantissa from OP1
MB0 = Mantissa from OP2
EA1 = Corrected exponent EA
EB1 = Corrected exponent EB
E2 = max(EA1,EB1)
B1 = LZD (B0), A1=LZD(A0)
EOP = Effective operation
RSA = Right shifted amount
AGTB = A greater than B
MA2,MB2=Swapped MA1, MB1
MB3 = Shifted right MB2
CIN = Carry input
COUT = Carry output
PSB = Predicted sticky bit
FSB = Final sticky bit
GD1 = Initial guard digit
RD1 = Initial round digit
ED = Extra digit
GD2,RD2 = Updated GD1,RD1
S1 = Initial decimal sum
S2 = Corrected S1
E3 = Corrected exponent E2
S3 = Final decimal sum
E4 = Final exponent
OP1 (STD754)
OP
OP2 (STD754)
Decoder, Special
Cases
Decoder, Special
Cases
SA
SB
MA0
EA0
MB0
EB0
EOP
MA1
MB1
EA1
EB1
Swapping
SWAP
PSB
MB2
RSA
MA2
E2
Shifting Right
MB3
RSA
EOP
PSB
SWAP
MA2 MB3
Control Signal
Generation
CIN MB3
EOP
AGTB
Final Sign
EOP MA2
16-Digit Decimal
Addition
Final Sign
PSB
GD1
COUT
ED
RD1
S1
E2
Post - Correction
FSB
GD2
RD2
S2
E3
FS=Final Sign
S3
E4
A continuacin se detalla las etapas involucradas en el diseo, para una mejor explicacin
consideraremos las seales como vectores de bits, el modelo es basado en decimal64 y la
cantidad de dgitos sern designados como p y el nmero de bits como N=4.p. Los vectores
sern representadas casi siempre como V [N-1 .. 0], la multiplicacin es representada por (.) y
[m .. n] indica m to/down to n bits. Los comentarios presentes en algunos algoritmos sern
precedidos por el smbolo -- como en los editores de lenguaje HDL.
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
Entradas
OPx [N-1 .. 0], representa al operando OPA y OPB (x=A o B) en formato decimal64.
Salidas
Sx, signo de un bit. Es 1 cuando OPx es negativo y 0 cuando es positivo.
Ex0 [e_lim+1 .. 0], exponente expresado como vector de (e_lim+2) bits.
Mx0 [N-1 .. 0], mantisa expresada como vector de p dgitos decimales, cada dgito
codificado en BCD (4 bits).
qNaN, un bit. Es 1 cuando OPx es qNaN y 0 cuando no lo es.
sNaN, un bit. Es 1 cuando OPx es sNaN y 0 cuando no lo es.
Inf, un bit. Es 1 cuando OPx es y 0 cuando no lo es.
En la figura 3.2 podemos observar el diagrama de flujo del decodificador y la generacin de los
casos especiales. Observamos un procedimiento de decodificacin DPD, como se explico
anteriormente, este proceso transforma los Declets que posee el operando en los p-1 dgitos
BCD. El dgito MSD proviene del campo combinacional del operando DFP, lo cual es mostrado
en el diagrama (figura 3.2).
S X = O P X [N -1 ]
qN aN = 0
sN aN = 0
In f = 0
E X 0 [e _ lim -1 .. 0 ] = O P X [N -7 .. N -6 -e _ lim ]
M X 0 [4 *(p -1 )-1 .. 0 ] = D P D _ d e c o d e (O P X [N -7 -e _ lim .. 0 ])
SI
E X 0 [e _ lim + 1 .. e _ lim ] = O P X [N -2 .. N -3 ]
M X 0 [4 *p -1 .. 4 *(p -1 )] = 0 & O P X [N -4 .. N -6 ]
(O P X [N -2 ] o r O P X [N -3 ]) = 0
NO
SI
E X 0 [e _ lim + 1 .. e _ lim ] = O P X [N -4 .. N -5 ]
M X 0 [4 *p -1 .. 4 *(p -1 )] = 1 0 0 & O P X [N -6 ]
(O P X [N -4 ] o r O P X [N -5 ]) = 0
NO
O P X [N -6 ] = 1
NO
in f = 1
SI
O P X [N -7 ] = 0
SI
qN aN = 1
NO
sN aN = 1
Figura 3.2 Diagrama de flujo que representa la decodificacin y los casos especiales
Pgina 15
Entradas
SF, un bit. Es 1 cuando R es negativo y 0 cuando es positivo.
EF[e_lim+1 .. 0], exponente expresado como vector de (q_lim+2) bits. El exponente se
encuentra en cero desplazado.
MF[4.p-1 .. 0], mantisa expresada como vector de p (precisin) dgitos decimales, cada
dgito codificado en 4 bits.
qNaN_F, un bit. Es 1 cuando R es qNaN y 0 cuando no lo es.
sNaN_F, un bit. Es 1 cuando R es sNaN y 0 cuando no lo es.
inf_F, un bit. Es 1 cuando R es y 0 cuando no lo es.
Salida
RF[N-1..0], operando decimal en formato IEEE 754-2008.
RF[N-1] = SF
RF[N-7-e_lim .. 0] = DPD_encode ( MF[4.(p-1)-1 .. 0])
RF[N-7 .. N-6-e_lim] = EF [e_lim-1 .. 0]
SI
inf_F = 1
NO
SI
sNaN_F = 1
NO
qNaN_F = 1
SI
NO
MF[4.p-1]=1
SI
RF[N-2 .. N-3] = 11
RF[N-4 .. N-5] = EF [e_lim+1 .. e_lim]
RF[N-6] = MF [4.(p-1)]
NO
RF[N-2 .. N-3] = EF [e_lim+1 .. e_lim]
RF[N-4 .. N-6] = MF [4.p-2 .. 4.(p-1)]
Pgina 16
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
(4)
MB1(4.p-1 .. 4.LZDB)=MB0(4.p-1-4.LZDB .. 0)
Antes del proceso LZD y para mejorar la performance del diseo se detecta los dgitos que son
diferentes de ceros de ambas mantisas MA0 y MB0; solo es necesario 1 bit para verificar lo
anterior. Las mantisas MA0 y MB0 son transformadas en una palabra de 16 bits donde cada bit
indica si el dgito es diferente de cero, la posicin tanto de los dgitos como de los bits se
mantiene. La transformacin se consigue realizando una operacin OR con los bits de cada
dgito. Esto se puede visualizar en la figura 3.4.
bb0
bb1
bb2
bb3
Combinational
Circuit
LZD
bb15
lz0
lz1
lz2
lz3
LZDA y LZDB son palabras de 4 bits para representar los 16 desplazamientos que pueden existir
en un formato de 16 dgitos de precisin como el dicemal64. La palabra de 16 bits bb es
generada como:
bb(i) = (MX0) i 3 or (MX0) i 2 or (MX0) i 1 or (MX0) i 0
(5)
si EOP=0, caso contrario es resta). Para simplicidad del anlisis se considera que las mantisas
en las operaciones aritmticas respetan el orden MA1+/-MB1 y adems que EA1>=EB1,
siempre se debe sumar o restar la mantisa de mayor exponente con la de menor exponente. Si
EA1<EB1 entonces la etapa swapping es llevada a cabo generando una seal SWAP para
identificar el proceso (si se produce swapping entonces SWAP=1, caso contrario SWAP=0). Los
dos procesos anteriores (LZD y swapping) producen nuevas mantisas como MA2 (con su
respectivo exponente igual al max(EA1, EB1)) y MB2 (con exponente igual al min(EA1, EB1)).
Tambin se considera como salida el nuevo exponente E2 que pertenece a la mantisa MA2. La
suma/resta requiere la alineacin de las mantisas, este proceso depende de la diferencia absoluta
de los exponentes Ed=|EA1-EB1|. Por lo tanto se debe desplazar MB2 una cantidad de dgitos a
la derecha de MA2, la cantidad a desplazar se conoce como RSA (right shifting amount) y su
clculo es como sigue:
If
else
(Ed<=p_max)
(6)
RSA=Ed
RSA=p_max
Donde p_max=18 dgitos, como trabajamos con MB2 de 16 dgitos entonces RSA tendra un
valor mximo de desplazamiento de 16, pero para simplificar el clculo de la etapa de rounding
entonces consideramos 2 dgitos ms que nos ayudar a calcular los dgitos de guarda y
redondeo [30]. Por eso el RSA es limitado a p_max=18. La figura 3.5 muestra el bloque para el
proceso de alineamiento, la lnea sombreada indica el camino crtico de la etapa.
OP
SA0
B0
A0
SB0
LZD
EA0
LZD
lzd_B
lzd_A
EB0
exp_B
exp_A
SUB
SUB
SWAP
EOP
A1
B1
swap
swap
RSA
E2
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
Para el desplazamiento usamos una versin nueva para RSA llamada RSA_new que es calculada
de acuerdo al diagrama de la figura 3.6. En el mismo diagrama observamos la formacin de la
seal PSB. Para acelerar el diseo usamos la funcin Dig_to_bit explicado en la etapa anterior,
para verificar que dgitos de MB2 son distintos de cero. La funcin genera MB2_bits =
Dg_to_bits(MB2) y es la entrada al proceso que calcula el RSA_new y PSB.
La figura 3.6 muestra el algoritmo para generar las seales de salida. En la figura anterior se
observa la funcin conv_int que se encarga de convertir un vector a un nmero entero.
RSA
SI
R S A > = 0 0 0 1 1
R S A _ n e w _ tm p = R S A -0 0 0 1 1
R S A _ n e w = R S A _ n e w _ tm p [3 .. 0 ]
tm p = 0
NO
SI
R SA_new > 0
NO
R S A _ n e w = 0 0 0 0
P S B = 0 0
P S B = M B 2 _ b its (0 ) & tm p
Algoritmo 2
if
RSA>="00011"
then
Pgina 19
En la figura 3.7 se aprecia las diferentes formas de desplazamiento de MB2 y las posiciones
donde son almacenadas en el vector MB3, recordemos que MB3 est alineado con MA2. Se
observa tambin los dgitos GR, RD y IED que pronostican los dgitos de guarda, de redondeo y
el dgito adicional. La seal RSA_new es calculada como RSA-3.
18 17 16 15 14 13 12 11 10 9
RSA=0 15 14 13 12 11 10 9
RSA=1 15 14
RSA=2 15 14
GD RD IED
2 1 0
1 0
2
RSA=3 15 14
15 14
RSA=4
15 14
RSA=5
15 14
RSA=6
. .
. .
. .
. .
RSA=16
RSA=17
13
MB2
. .
. .
. .
.
15 14
15 14
1 0
15 14
RSA=18
RSA_new 0
MB3
14
15
RSA
0
1
2
3
4
5
.
.
.
15
16
17
18
0
&
0
&
0
&
( (MB2)0 >0 ) &
( (MB2)1 >0 ) &
( (MB2)2 >0 ) &
.
.
.
( (MB2)12>0 ) &
( (MB2)13>0 ) &
( (MB2)14>0 ) &
( (MB2)15>0 ) &
PSB (1)
(
(
(
(
(
(
&
BITS)
0
0
0
0
(MB2)0 >0 )
((MB2)1>0) or ((MB2)0 >0) )
.
.
.
((MB2)11>0) or ((MB2)10>0) or
((MB2)12>0) or ((MB2)11>0) or
((MB2)13>0) or ((MB2)12>0) or
((MB2)14>0) or ((MB2)13>0) or
((MB2)9 >0)
((MB2)10>0)
((MB2)11>0)
((MB2)12>0)
or
or
or
or
((MB2)0>0)
((MB2)0>0)
((MB2)0>0)
((MB2)0>0)
)
)
)
)
PSB (0)
La figura 3.7 muestra la forma de calcular el RSA_new y la figura 3.8 la generacin del PSB,
observamos que la seal RSA es esencial para el procesamiento. Cuando RSA<3 entonces la
mantisa es completamente ubicada dentro de MB3 respetando la posicin como se ve en la
figura 3.7, bajo est condicin la seal de 2 bits PSB es igual a 0&0. Para simplificar el
clculo de PSB generamos una nueva seal de desplazamiento llamada RSA_new conforme a lo
observado en el diagrama de flujo de la figura 3.6, ahora los desplazamientos lo determina
RSA_new. EL mximo desplazamiento de RSA_new ubica el MSD de MB2 en la LSD de MB3,
se adopta est lmite pues el LSD de MB3 se usa como un dgito extra (IED) para algunas
Pgina 20
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
(7)
Se muestran los algoritmos para producir la seal PSB como las seales SB1 y SB2.
else if
RSA = 4 then
PSB=(MB2) 1 &SB2
--when SB1=(MB2) 1 or SB2
else if
RSA=3 then
PSB=(MB2) 0 &0
--when SB1=(MB2) 0
else
PSB=0&0
--when SB1=0
end if
es diferente de 0
RSA-4 Dgitos
SB2=0 si todos los dgitos
( MB 2 ) RSA 4 ........( MB 2 ) 0
de 0
Pgina 21
En la figura 3.8 presenta el circuito propuesto para el clculo de PSB, notar que conv_int es una
funcin que transforma un vector a un nmero entero.
bb(conv_int(rsa)-1)
. . . . . . . bb(1) bb(0)
...
tmp
bb(conv_int(rsa))
RSA
bb(0) & 0
RSA_new = RSA - 3
rsa= RSA_new
rsa= RSA_new
rsa >0
rsa=0
rsa >= 3
00
rsa < 3
PSB
LSD
GD1 RD1
IED
MA2 + MB3
Component
3 Digits
CIN
AGTB
EOP
Pgina 22
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
Entradas
MA2[4.p-1 .. 0], mantisa de 16 dgitos, directamente a la operacin suma/resta.
MB3[4.(p+3)-1 .. 0], versin desplazada de MB2, para la suma/resta solo consideramos
los 16 MSD, los 3 ltimos dgitos son considerados en el clculo del dgito de guarda,
del dgito de redondeo y para el dgito extra respectivamente.
EOP, operacin efectiva.
PSB[1 .. 0], predice las seales sticky-bit que pueden ocurrir en el proceso.
Salidas
CIN, representa el acarreo de entrada a la suma/resta.
AGTB, verifica si MA2<MA3[4.(p+3)-1 .. 12], seal muy utilizada cuando EOP=1.
GD1[3 .. 0], valor predefinido para DG.
RD1[3 .. 0], valor predefinido para RG.
IED[3 .. 0], valor predefinido para ED.
La operacin suma/resta opera solo con 16 dgitos por tal motivo los 3 ltimos dgitos LSD de
MB3 son procesados para generar seales como el acarreo de entrada a la suma/resta y la seal
AGTB (utilizado en la resta) que verifica si MA2 es mayor que MB3[4.(p+3) .. 12]. Se menciona
que la seal MB3[11 .. 8], MB3[7 .. 4] y MB3[3 .. 0] son considerados como los valores iniciales
para predecir la seal GD, RD y IED, estas seales sern corregidas bajo ciertas condiciones que
se explican posteriormente. En paralelo a este mdulo se lleva a cabo la etapa de suma/resta que
ser explicada en el siguiente apartado. El objetivo de esta etapa es calcular las seales CIN,
AGTB, y los valores corregidos para dgito de guarda (GD1), dgito de redondeo (RD1) y el
dgito extra (ED).
El algoritmo utilizado para esta etapa es:
Algorithm 5 Generacin del GD1, RD1, ED, AGTB, CIN.
Entradas: B3, MA2, IED=(MB3) 0 , PSB
EOP = 0:
GD1=(MB3) 2
RD1=(MB3) 1
AGTB=0
ED=IED=(MB3) 0
-- Donde el Sticky-bit=PSB(0) or PSB(1)
Pgina 23
EOP=1:
if RSA>0 then
CIN=not(PSB(1)or PSB(0)or((MB3) 1 >0)or((MB3) 2 >0)
AGTB=1
if (PSB(1) or PSB(0))=1 then
GD1=9(MB3) 2
RD1=9(MB3) 1
else if (MB3) 1 =0 then RD1=0
if (MB3) 2 =0 then GD1=0
else GD1=10-(MB3) 2
end if
else
GD1=9-(MB3) 2
RD1=10-(MB3) 1
end if
if (IED=0) then
ED=PSB(0)&0&0&PSB(0)
else
ED=9-IED+not(PSB(0))
end if
else -- RSA=0
if (MA2>MB3) then
CIN=not(PSB(1) or ((MB3) 2 >0)or ((MB3) 1 >0)))
AGTB=1
else CIN=PSB(1) or ((MB3) 2 >0) or ((MB3) 1 >0))
AGTB=0
end if
GD1=0, RD1=0, ED=0
end if
(8)
Pgina 24
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
(9)
c(i+1)=c(i)
else
c(i+1)=G(i)
(10)
end if
(11)
end if
end loop
for i in 0 .. n-1 loop
--Clculo de la suma:
z(i)=(x(i)+y(i)+c(i)) mod 10
end loop
z(n)=c(n)
Pgina 25
Consideraciones adicionales
1.-La sentencia (11) es equivalente a la ecuacin booleana:
(12)
c(i+1)=P(i).c(i) or not(P(i)).G(i)
G(i)=1 if x(i)+y(i)>9
G(i)=0 if x(i)+y(i)<9
G(i)=0 or 1 (don't care) otherwise.
si la relacin anterior es usada, entonces la funcin de propagacin puede ser definida como:
(15)
P(i)=1 if x(i)+y(i)=9
P(i)=0 if x(i)+y(i)<9
P(i)=0 or 1 (don't care) otherwise
x(n-1)
x(n-2)
y(n-1)
G-P
G-P
G(n-1)
z(n) = cout = c(n)
P(n-1)
Cy.Ch.
x(n-1)
x(1)
y(n-2)
y(n-1)
G(n-2)
c(n-1)
x(0)
G-P
P(n-2)
Cy.Ch.
x(n-2)
y(1)
y(n-2)
c(n-2)
G(1)
G-P
G(0)
P(1)
c(2)
..
Cy.Ch.
x(1)
mod 10
sum
mod 10
sum
z(n-1)
z(n-2)
z(1)
P(0)
c(1)
y(1)
mod 10
sum
y(0)
Cy.Ch.
x(0)
cin = c(0)
y(0)
mod 10
sum
z(0)
3.- Las celdas carry-chain son circuitos binarios, mientras las funciones generacin-propagacin
y el mod 10 sum son circuitos decimales.
La ecuacin (12) puede ser implementado por un multiplexor 2-1 (figura 3.12.a), mientras que
la ecuacin (14) por 2 compuertas (figura 3.12.b).
Pgina 26
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
P(i)
G(i)
c(i+1)
G(i)
c(i)
P(i)
c(i+1)
c(i)
b) AND-OR circuit
a) carry multiplexer
s4
P
G
x3 y3
x2 y2
x1 y1
x0 y0
FA
FA
FA
FA
s3
s2
s1
s0
G = s 4 V s 3 .(s 2 V s 0 )
P = s 4 '.s 3 .s 2 ' . s 1 '.s 0
Pgina 27
x3(i) y3(i)
x2(i) y2(i)
FA
FA
..
P-G
p(i)
FA
FA
Addition
stage
g(i)
c(i+1)
c(i)
Carry chain
Carry
computation
stage
Correction
stage
HA
HA
HA
HA
Si queremos mejora en la latencia pero penalizando parcialmente el hardware podemos usar las
siguientes formulas:
(16)
Asumiendo valores para MA2 y MB3 representaremos las posibles operaciones suma/resta que
puede ocurrir. Por facilidad de clculo para el ejemplo, MA2 y MB3 sern nombrados como A y
B y representados en decimal32 o sea vectores de 7 dgitos (A(i) y B(i) donde i=0,1,2..6). La
relacin C=(A+B) mod 16, representa la suma de cada dgito de ambas mantisas en base 16. Se
muestra tambin las funciones Generation/Propagation generadas, as como los respectivos
acarreos formados y finalmente sumaremos las correcciones producidas a C. Se asume un
acarreo inicial (CIN) igual a cero.
MA2, MB3 y EOP=0
La figura 3.15 presenta la suma cada dgito en mod 16, se calculan las funciones P/G de cada
dgito as como el acarreo (las flechas indican la generacin del acarreo). Las funciones P/G se
calculan de (9), se calcula luego el acarreo (c) y los dgitos de correccin provienen de la seal
concatenada c(i+1)&c(i+1)&c(i). El resultado final es observado en la figura siguiente.
A
B
=
=
= (A + B) mod 16
2
3
5
5
6
3
8
1
9
8
1
0
8
9
10
Propagacin
Generacin
Acarreo
Correccin
eop=0
CIN
Pgina 28
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
A
B
=
=
3
2
9B =
C
5
5
= (A + 9 - B) mod 16
3
6
10
1
8
8
9
0
1
9
8
1
10
Propagacin
Generacin
Acarreo
Correccin
eop=1
CIN
+ 1
A
B
=
=
2
3
5
5
6
3
8
1
9
8
1
0
8
9
= (A + 9 - B) mod 16
Propagacin
Generacin
Acarreo
Correccin
eop=1
CIN
Para minimizar el consumo de tiempo y hardware las implementaciones de P(i) y G(i) de (16)
pueden ser calculadas como:
P(i)=(x0(i) y0(i)).pp(i)
(17)
G(i)=gg(i) or (pp(i).x0(i).y0(i))
Donde pp es una funcin de 6 entradas, tal que pp(i)=1 si la suma de los primeros 3 bits de
x(i)+y(i)=4. La funcin gg de 6 entradas es 1 si la suma de los 3 primeros bits x(i)+y(i)>=5.
Pgina 29
c(i+1)
pps(i)
LUT
1
0
x0(i)
pp(i) y0(i)
P(i)
LUT
0 1
G(i)
c(i)
LUT
ppa(i)
EOP
x1(i)
x2(i)
x3(i)
y1(i)
y2(i)
y3(i)
LUT
x1(i)
x2(i)
x3(i)
y1(i)
y2(i)
y3(i)
LUT
ggs(i)
1
0
gg(i)
gga(i)
El resultado final es conocido como suma parcial S1=MA2+MB3[4.(p+3) .. 12], y debe ser
corregida cuando ocurre la siguiente condicin:
(18)
(S1 corrected ) i =9-(S1) i if EOP=1 and AGTB=0, otherwise (S1 corrected ) i =(S1) i
Entradas
S1[4.p-1 .. 0], suma parcial que proviene de la etapa anterior.
E2[e_lim-1 .. 0], exponente parcial, el mximo de ambos exponentes normalizados.
COUT, acarreo de salida de la etapa suma decimal.
ED[3 .. 0], dgito extra usado para condiciones de overflow.
RD1[3 .. 0], dgito de redondeo parcial.
GD2[3 .. 0], dgito de guarda parcial.
PSB, seal que predice los sticky-bits correctos.
Salidas
S2 [4.p-1 .. 0], suma actualizada y enviada a la etapa de redondeo.
Pgina 30
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
Las correcciones aplicadas a las entradas son realizadas de acuerdo a las siguientes condiciones:
Si EOP=1 y COUT=1
Condicin forzada cuando se desarrolla una operacin suma y se genera un acarreo de salida, en
consecuencia una correccin es aplicada a la suma parcial S1. Asumimos COUT como el MSD
de S1 por lo tanto para mantener la precisin de 16 dgitos se descarta el LSD de S1, este cambio
es almacenado en una seal S2. Tambin se realizan nuevas correcciones como: el dgito de
guarda GD2 queda definido por el LSD de S1, el dgito de redondeo es ahora la entrada GD1, el
exponente final, designado por E3, posee el valor de E2+1 y el valor final del sticky-bit (FSB)
est dado por la operacin OR: PSB(0) or PSB(1) or RD1.
Est condicin se cumple cuando se realiza una operacin resta, el MSD de S1 es igual a cero y
el dgito de guarda GD1 es mayor que cero. Entonces S2 est formada por los 15 LSDs de S1
concatenado con el GD1 (GD1 ser el nuevo LSD de S2). El dgito final de guarda GD2 es
determinado por RD1, el dgito de redondeo final RD2 es igual al dgito extra ED, el exponente
final E3 es actualizado a E2-1 y el sticky-bit final (FSB) es actualizado a PSB(0).
Condicin forzada cuando se desarrolla una resta, el MSD de S1 es igual a cero y dgito guarda
de entrada es igual a cero. El resultado S2 es igual a S1, el digito de guarda final GD2 es igual a
GD1, el dgito de redondeo final RD2 es igual a RD1, el exponente final es igual a E2 y el
sticky-bit final (FSB) equivale a la operacin OR: PSB(0) or PSB(1).
En la figura 3.19 observamos la arquitectura para esta etapa.
s e l2 = ( (S 1 ) 1 5 = 0 ) a n d (G D 1 > 0 ) a n d (E O P = 1 )
s e l1 = C O U T a n d n o t (E O P )
(S 1 ) 1 4 (S 1 ) 1 3 ( S 1 ) 1 2 . (S 1 ) 0 & G D 1
s e l2 = 1
s e l1 = 0
S1
s e l2 = 0
s e l1 = 0
0 0 0 1 & S 1
s e l1 = 1
RD1
s e l1
s e l2 = 1
s e l1 = 0
s e l2
M U X -3
RD1
s e l2 = 1
s e l1 = 0
s e l2 = 0
s e l1 = 0
s e l1 = 1
s e l1
s e l2
IS B (1 ) o r IS B (0 )
s e l2 = 0
s e l1 = 0
M U X -3
s e l1
s e l2
s e l2 = 1
s e l1 = 0
E2
E2+1
s e l2 = 0
s e l1 = 0
M U X -3
s e l1 = 1
s e l1
s e l2
E3
RD2
s e l2 = 1
s e l1 = 0
s e l1 = 1
GD2
E 2 -1
GD1
M U X -3
IS B (0 )
s e l2 = 0
s e l1 = 0
M U X -3
S2
NAD
(S 1 ) 0
GD1
IS B (1 ) o r IS B (0 ) o r (( S 1 ) 0 > 0 )
s e l1 = 1
s e l1
s e l2
FSB
Pgina 31
-- GD=5
if SB=0 then add_one=0
else add_one=1
end if
end if;
(19)
Proceso
(GD > 5) v (( GD == 5) ((RD > 0) v SB))
GD >= 5
!SF ((GD >0) v ( RD >= 0) v SB)
SF ((GD >0) v ( RD >= 0) v SB)
none
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
200 Mhz. Las aplicaciones de sumadores en FPGA son limitadas, a nuestro criterio el diseo del
sumador DFP presentado es uno de los primeros sobre FPGA. Existe una propuesta en [9]
basada en un sumador de codificacin BID (Binary Integer Decimal), los resultados sern
usados para comparaciones.
Components
Cycles
Decoder
1
Leading Zero Detector
1
Swapping
1
Pre-signal generation
1
BCD Addition
Carry-chain Adder
1
Post-Correction
1
Rounding (overflow, underflow)
1
Further combinational circuits
0
Special Cases
0
Further combinational circuits
0
Coder
1
Entire Design
Delay Breakdown
LUTs
%
128
5.6%
18
0.8%
16
0.7%
97
4.2%
375
16.4%
91
4.0%
110
4.8%
1416
59.9%
4
0.2%
48
1.0%
83
3.6%
2390
100%
La tabla 3.5 muestra el coste de rea de los mdulos involucrados. El sumador carry-chain est
basado en el presentado en [28], se realiz un rescheduling y se obtuvo un incremento de
velocidad del 13%. El mdulo LZD propuesto es comparado con el utilizado en el multiplicador
DFP implementado en [18], se observ que el mdulo propuesto presenta 18 % mayor rapidez.
En la tabla 3.6 observamos el diseo completo de nuestro sumador considerando mnimo delay.
Period
Latency
DFP adder/subtractor #slices # FF # LUT # Cy minimum
(ns)
(ns)
Minimun delay
935 935 2390 8
5
40
Tabla 3.6 Resultados del sumador sintetizado/implementado en Virtex-5
Otra manera de evaluar los resultados fue realizar lo siguiente: El sumador fue implementado
sobre un soft-processor Microblaze obteniendo 32 ciclos para una solucin HW y 822 ciclos
para una solucin SW, de la misma manera las The DecNumber Library [14] fueron evaluadas
para comparar la latencia de un sumador DFP sobre distintos procesadores. En la Tabla 3.7 se
muestra algunas implementaciones (software y hardware) en diferentes plataformas.
Pgina 33
Application
Adder
Itanium2 [6]
1.4
219
Xeon5100[5]
133
Xeon [6]
3.2
249
Pentium M Intel[14]
1.5
848
Power6[31]
17
Z10[31]
4.4
12
1.3
13
SW
HW
Clock
Speed Cycles
(GHz)
0.002
Delay
#FO4
ns
Area
NANDs mm2
Mop
/sec
10
2.76
22085.5
0.14
362.3
0.15
285.9
156.4
44.3
77.8
565.3
3.4
2.7
50.2
44
6.4
22.6
12.9
1.8
294.1
366.7
100
2.42
68459.0
0.44
413.2
40
200
Los datos de la Tabla 3.7 fueron obtenidos de [9], se observa que la librera DFP ha sido
evaluada en varios procesadores comprobando una performance que presenta una peor latencia
de 848 ciclos y una mejorada de 12 ciclos. Esto nos permite argumentar una ligera mejora de la
propuesta, pues solo necesitamos 8 ciclos con una eficiencia de 200 Mops/sec.
Verificacin
La validacin del diseo consisti en generar, mediante SW y en base a las libreras DFP, gran
cantidad de vectores de nmeros DFP que fueron aplicados en Testbench usando la herramienta
ModelSim. Para el diseo se utiliz ms de 40,000 operaciones.
Comparaciones
En la Tabla 3.8 mostramos la sntesis del sumador/restador comparado con el sumador BID que
propone [9], el diseo propuesto reporta menos ciclos de trabajo, una performance de 22% ms
rpido pero un coste de rea superior en 10% con respecto al sumador BID. Podemos
argumentar que el trabajo presente es una gran alternativa de diseo y uno de los primeros
aportes para sumadores DFP sobre FPGA.
Adder DFP LUTs FF DSPs BRAM Freq (MHz) Cycles Latency (ns) Mops/sec
Adder en [7]
2171 1392 12
1
163.9
13 / 18 79.3 / 109.8 12.6 / 9.1
200
8
40.0
200
Adder proposed 2390 935
Tabla 3.8 Resultados del sumador BID en [7] y el sumador propuesto
Pgina 34
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
4 DISEO
DE
LA MULTIPLICACIN
FLOTANTE DECIMAL
PUNTO
OP1 (STD754)
LEGEND
MA0 = Mantissa from OP1
MB0 = Mantissa from OP2
EA1 = Corrected exponent EA
EB1 = Corrected exponent EB
MA2,MB2 = Swapped MA1, MB1
SB = Sticky-bit
GD = Guard digit
RD = Round digit
IP = Intermediate product
IE = Intermediate exponent
P = Product
E = Exponent
OP2 (STD754)
Decoder, Special
Cases
Decoder, Special
Cases
SA
SA
SB
SB
MA0
EA0
MB0
EB0
FS
MA1
EA1
MB1
EB1
16-Digit Decimal
Multiplier
SB
GD
IP
RD
IE
FS=Final Sign
Pgina 35
El diseo utiliza las BRAMs presentes en los dispositivos Xilinx, en las cules almacenamos
todas las posibles multiplicaciones de 2 dgitos BCD. El total de combinaciones ocupa 100x8
bits ROM que pude ser mapeado como 28 x8-bit ROM. En [24] se argumenta que diseos basado
en BRAM no son muy recomendables para implementaciones combinacionales, pero si para
diseos secuenciales y pipeline. El mdulo multiplicador Nx4, calcula el producto de 4 dgitos
con los N dgitos de otro operando. Los resultados demuestran que el mdulo Nx4 genera una
mejor performance y un aceptable trade-off latencia/rea. El circuito multiplicador secuencial
NxM implementa M/4 veces el mdulo multiplicador Nx4 lo que genera M/4 productos
parciales, una manera de acelerar el sistema es obtener los productos parciales en paralelo pero
cada uno empezando un ciclo despus. El mdulo multiplicador NxM dgitos BCD usa como
celda bsica el mdulo Nx4, y los resultados demuestran una aceptable velocidad de
procesamiento.
a(n-1)
1x1 BCD
Multiplier
a(n-2)
1x1 BCD
Multiplier
a(2)
1x1 BCD
Multiplier
.......
C(n-1)
C(n-2)
Carry-chain adder
.......
D(n-1)
D(n-2)
D(n-3)
.......
Z(n)
Z(n-1)
Z(n-2)
.......
a(1)
1x1 BCD
Multiplier
a(0)
1x1 BCD
Multiplier
C(2)
C(1)
D(2)
D(1)
D(0)
Z(3)
Z(2)
Z(1)
C(0)=Z(0)
Z(0)
Pgina 36
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
SF = SA xor SB = 1
Etapa Leading zero detection
LZDA = LZD(MA0)=3 y EA1 = EA0 - 3
LZDB = LZD(MB0)=4 y EB1 = EB0 - 4
MA1 = 5676000
MB1 = 4350000
= -8
= -11
Etapa Multiplicacin
MB2 = 5
MB3 = 4
6
3
7
5
6
0
0
0
0
0
0
0
6
4
7
3
6 x
5
3
5
3
0
7
3
5
6
5
0
2
0
3
5
3
0
3
5
1
0
1
5
2
8
1
1
2
0
2
0
2
4
2
8
1
5
2
8
7
1
1
6
3
8
+
2
2
7
7
1
2
8
0
0
3
2
4
8
8
0 +
2
0
2
4
7
2
8
6
4
4
Redondeo
PI[55 .. 0] = 24690600000000
GD = PI[27 .. 24] = 0
RD = PI[23 .. 20] = 0
Sticky-bit = Operacin OR de los bits restantes = 0
Resultado
Multiplicacin final[27 .. 0] = 2469060,
Exponente final = E + 7 = -12,
Signo final=1
Pgina 37
Delay Breakdown
Components
Cycles
LUTs
Decoder
128
2.6%
24
0.5%
16x16 Multiplier
3768
77.2%
Rounding
103
2.1%
Combinational circuits
656
13.4%
Coder
83
1.7%
Combinational circuits
116
2.4%
Entire Design
12
4878
100.0%
BCD
Multiplier
Verificacin
La validacin del diseo consisti en generar, mediante SW y en base a las libreras DFP, gran
cantidad de vectores numricos DFP que fueron aplicados a Testbench usando la herramienta
ModelSim. Para nuestro diseo usamos ms de 30,000 operaciones.
Comparaciones
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
simples arquitecturas para el resto de mdulos. Este rescheduling reporta una mejor
performance: 17% ms rpida y 43% menos en rea que el multiplicador original.
En la tabla 4.2 se observa la sntesis de ambos multiplicadores.
Multiplier DFP
Slice LUTs
FF
Multiplier [16]
7.3
12
87.6
11.4
6.2
12
74.4
13.4
Podemos argumentar que el multiplicador presenta menos coste de rea que el sumador, ste
ltimo es ms complejo pues emplea ms mdulos en su diseo.
Pgina 39
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
5 PRUEBAS Y RESULTADOS
Para poder utilizar los mdulos diseados, analizar los tiempos entre seales de entrada salida y
presentar comparaciones de soluciones HW/SW se implementa una aplicacin de tarifacin de
una compaa de telfono (telephone company billing). Este algoritmo se basa en operaciones
de suma/multiplicacin por lo tanto no intenta cubrir todo el amplio espectro de operaciones en
punto decimal.
Configurar las tasas a utilizar
baserate = "0.0013"
disprate = "0.00894"
basetax = "0.0675"
disttax = "0.0341"
//
//
//
//
tasa base
tasa alta
tasa impuesto
tasa impuesto alta
Configuracin
t=0
SumB = 0
SumD = 0
SumT = 0
No
Calltype = 0
Si
P = disrate*Time
Redondeo de P hasta la
forma X.XX
P = baserate*Time
D = P*distax
B = P*basetax
Redondeo de D hasta la
forma X.XX
Redondeo de B hasta la
forma X.XX
SumD = SumD + D
t=t+D
SumB = SumB + B
t= P + B
SumT = SumT + t
Si
Se registran mas
llamadas?
No
SumT = Tarifa Final
Pgina 41
La aplicacin consiste en capturar desde un archivo de texto una gran cantidad de datos que
representan las duraciones telefnicas en segundos que un usuario realiza. Para cada llamada se
aplica una serie de tasas de costo y diferentes impuestos, tambin se aplican redondeos para
casos particulares. Estas operaciones procesan todos los tiempos y generan como resultado la
tarifa telefnica, esto se aplica para cientos de llamadas. El software implementado en C++ se
bas en las funciones de aritmtica decimal propuestas por la The DecNumber Library [14]. Las
operaciones aritmticas propuestas por la librera fueron rediseadas debido a la gran
complejidad de codificacin que muestran y sobre todo por la necesidad de probar parte del
diseo sobre memorias locales (BRAM) de limitada capacidad. El diagrama de flujo de la figura
5.1 muestra los pasos para el desarrollo de la aplicacin.
La implementacin final se lleva a cabo mediante tcnicas de HW/SW y mediante una
plataforma reconfigurable Soft Core Microblaze para el desarrollo de las operaciones suma,
resta y multiplicacin.
La solucin SW de las operaciones suma y multiplicacin se basaron en la librera de nmeros
en punto flotantes The DecNumber Library, la solucin HW de las mismas operaciones se
implement en VHDL y fueron explicadas en los captulos anteriores. Mencionaremos algunas
especificaciones que posee el procesador Microblaze, que es utilizado como herramienta para
las pruebas finales.
Pgina 42
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
Por las definiciones anteriores, parte del trabajo es la aceleracin del algoritmo telephone billing
por eso la idea es generar coprocesadores para la suma y multiplicacin y conectarlos al
Microblaze mediante la interfaz FSL. La figura 5.3 muestra la idea del sistema propuesto
SW/HW.
M IC R O B L A Z E
FSL 1
FSL INTERFACE
ADD / SUB
R0
R1
R2
.
.
.
R 30
R 32
M U LT
FSL 2
Figura 5.4 Diagrama de bloques propuesto por la herramienta Xilinx Platform Studio
Las pruebas se basan en la generacin a gran escala de datos en formato decimal64 que
representan los tiempos de duracin de las llamadas telefnicas, desarrollo de las operaciones
aritmticas en SW y luego en HW, por ltimo la comparacin de los valores obtenidos en SW y
HW.
Primero se implementa los coprocesadores para la suma y multiplicacin, detallaremos en tablas
los resultados obtenidos respectivamente. Finalmente se desarrolla una solucin HW/SW para la
aplicacin telephone billing detallando tambin los resultados generados.
El programa utilizado para la suma se muestra en la figura 5.5, observar que la simulacin en
SW est representado por la funcin decDoubleAdd (para la suma) y la solucin HW est
representado por las funciones son nputfsl (para escribir sobre el bus) y ngetfsl (para leer del
Pgina 44
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
bus) que nos permite comunicarnos con el bus FSL. Recordar que las funciones utilizadas se
basan en [14].
Para el caso de la multiplicacin la implementacin SW se basa en la funcin decMultiplyAdd().
Como trabajamos con nmeros en formato Decimal64 debemos escribir 4 nmeros (los dos
operandos a sumar o multiplicar) de 32 bits y leer 2 nmeros de 32 bits que representa el
resultado final.
En la tabla 5.1 y 5.2 observamos la comparacin de los ciclos de trabajo para solucin SW y HW
de ambas operaciones. Para una medida precisa de los ciclos de consumo de cada operacin el
diseo se implement sobre memorias BRAMs. La tabla presenta los ciclos totales en SW
(Cycles SW), ciclos totales en HW (Cycles HW), ciclos por operacin (Cycles/operation), el
speed-up y el delay. El nmero de operaciones realizadas fueron de 256, 512, 1024, 2048 y
4096 como se observa en la tabla de abajo. El mismo nmero de operaciones se utilizaron en las
dems tablas.
Pgina 45
Cycles SW
Cycles
HW
Cycles /
operation
SW
Cycles /
operation
HW
Speed-up
Delay (ns)
SW
Delay (ns)
HW
256
222222
8190
868
32
23.4
6944.4
255.9
512
444430
16388
868
32
23.4
6944.2
256.1
1024
888846
32780
868
32
23.5
6944.1
256.1
2048
1777678
65600
868
32
23.5
6944.1
256.3
4096
3555342
131100
868
32
23.5
6944.0
256.1
Adder
Bram
# Operations
Multiplier Cycles
Bram
SW
# Operations
Cycles
HW
Cycles /
Cycles /
operation operation Speed-up
SW
HW
Delay
(ns)
SW
Delay
(ns)
HW
256
404238
9486
1579
37
42.6
12632.4 296.4
512
808462
18958
1579
37
42.6
12632.2 296.2
1024
1616910
37902
1579
37
42.7
12632.1 296.1
2048
3233806
75790
1579
37
42.7
12632.1 296.1
4096
6467598 151566
1579
37
42.7
12632.0 296.0
En ambas tablas se confirma la buena performance que presenta el uso de coprocesadores para
acelerar sistemas, vemos mayor speed-up en la multiplicacin que resultara una herramienta
potente cuando se requiere procesar gran cantidad de multiplicaciones. Recordemos que la suma
y la multiplicacin HW analizada en los captulos anteriores presentan un delay de 8 y 13 ciclos
respectivamente.
Observacin: La propuesta HW del sumador explicado en los anteriores captulos presenta una
latencia de 8 ciclos, pero el reporte del coprocesador establece 32 ciclos de reloj. Nosotros
esperbamos alrededor de 21 25 ciclos de reloj por el motivo de considerar el siguiente
anlisis de tiempos en la tabla 5.3:
Proceso
Cycles
Write to FSL
Pgina 46
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
Con este anlisis se esperaba un delay de 13+N, en caso de la suma N=8 ciclos, que debera ser
21 ciclos para caso de la suma. Se obtuvo 32 ciclos lo que demuestra un exceso de 11 ciclos,
una alternativa para analizar esta situacin fue revisar el proceso de disassembler de cada
instruccin como se muestra en la figura 5.6. Analizando la operacin suma, el exceso de
ciclos se puede justificar si observamos el disassembler de las funciones ngetfsl() y nputfsl(),
stas funciones generan instrucciones como nput (comunicacin directa con el FSL) y aparte las
instrucciones para acceso de memoria imm y lwi. Las 2 instrucciones ltimas son las que
producen los ciclos en exceso, una solucin sera ejecutar el cdigo en assembler e inicializar
los registros (instruccin imm) al inicio de la programacin y no en cada funcin ngetfsl o
nputfsl.
Para el caso de la multiplicacin el anlisis es el mismo.
78
start_time=XTmrCtr_mGetTimerCounterReg(XPAR_XPS_TIMER_0_BASEADDR, 0);
0x2c48
<main+268>:
imm
0x2c4c
<main+272>:
lbui
0x2c50
<main+276>:
addk
r7, r0, r0
0x2c54
<main+280>:
addk
r8, r7, r0
0x2c58
<main+284>:
imm
-31808
0x2c5c
<main+288>:
0x2c60
<main+292>:
lwi
r12, r3, 0
0x2c64
<main+296>:
imm
0x2c68
<main+300>:
0x2c6c
<main+304>:
imm
0x2c70
<main+308>:
79
0x2cc0
<main+388>:
0x2cc4
<main+392>:
imm
0x2cc8
<main+396>:
andi
r7, r3, -1
0x2cd0
<main+404>:
xori
0x2cd4
<main+408>:
0x2cd8
<main+412>:
80
// 0xd608 <hw_result>
0
// 0xde10 <sample+8>
// 0x2c74 <main+312>
81
nputfsl((&sample[n])->words[0],0);
0x2c74
<main+312>:
imm
0x2c78
<main+316>:
lwi
0x2c7c
<main+320>:
nput
r3, rfsl0
82
nputfsl((&sample[n])->words[1],0);
0x2c80
<main+324>:
imm
0x2c84
<main+328>:
lwi
0x2c88
<main+332>:
nput
r4, rfsl0
83
//0xc878 <XTmrCtr_Offsets>
nputfsl((&sample[n+1])->words[0],0);
Pgina 47
0x2c8c
<main+336>:
imm
0x2c90
<main+340>:
lwi
0x2c94
<main+344>:
nput
r3, rfsl0
84
nputfsl((&sample[n+1])->words[1],0);
-0x2c98
<main+348>:
addk
r5, r8, r9
-0x2c9c
<main+352>:
lwi
r3, r5, 4
-0x2ca0
<main+356>:
nput
r3, rfsl0
85
ngetfsl((&hw_result[n/2])->words[0],0);
-0x2ca4
<main+360>:
srl
r4, r7
-0x2ca8
<main+364>:
muli
r4, r4, 8
-0x2cac
<main+368>:
addk
-0x2cb0
<main+372>:
nget
r3, rfsl0
-0x2cb4
<main+376>:
imm
-0x2cb8
<main+380>:
swi
86
ngetfsl((&hw_result[n/2])->words[1],0);
-0x2cbc
<main+384>:
nget
r5, rfsl0
-0x2ccc
<main+400>:
swi
r5, r6, 4
87
88
end_time=XTmrCtr_mGetTimerCounterReg(XPAR_XPS_TIMER_0_BASEADDR,0)
;
Figura 5.6 Proceso de disassembler del programa utilizado
Como pruebas adicionales implementamos una arquitectura con memorias Cache de datos e
instrucciones de 16K y 32K. Tuvimos que ejecutar el sistema sobre una memoria externa, por
eso consideramos una DDRAM de 64M, nos interesa ver la aceleracin que logramos tanto en
las soluciones HW como SW. Los resultados son mostrados en la tabla 5.4, para las pruebas
consideramos 256, 512, 1024, 2048 y 4096 operaciones.
Adder
DDram
64M
No cache I-D
Cycles
Speed-up Speed-up
Cycles SW
HW
SW
HW
Speed-up Speed-up
SW
HW
# Op.
Cycles
SW
Cycles
HW
Cycles
SW
Cycles
HW
256
4,563,911
162,379
365,499
17,803
12.5
9.1
365,393
17,797
12.5
9.1
512
9,135,432
324,619
725,545
35,316
12.6
9.2
725,407
35,335
12.6
9.2
1,446,588 70,390
12.6
9.2
1,445,431 70,387
12.6
9.2
12.7
9.2
2,887,100 140,524
12.7
9.2
12.7
9.2
5,768,899 280,787
12.7
9.2
La tabla 5.4 muestra una versin del sumador sobre una arquitectura sin Cache y con Cache,
para estos diseos mostramos la latencia en ciclos tanto para la solucin SW como HW, la
Pgina 48
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
No cache I-D
# Op.
Cycles
SW
Cycles
HW
Cycles
SW
Cycles
SW
Cycles
HW
256
8,948,303
162,370
518,012
17,769
17.3
9.1
512
17,896,408
324,620
1,029,125 35,314
17.4
1024
35,792,781
649,102
2,051,826 70,399
2048
4096
Speed-up Speed-up
SW
HW
518,082
17,781
17.3
9.1
9.2
1,029,063 35,316
17.4
9.2
17.4
9.2
2,051,328 70,384
17.4
9.2
17.5
9.2
4,096,129 140,523
17.5
9.2
17.5
9.2
8,185,207 280,798
17.5
9.2
bus FSL, recordar que trabajamos con operandos de 64 bits por eso enviamos los primeros 32
bits y luego los restantes.
Pgina 50
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
1,280
1,024
2,304
512
2,560
2,048
4,608
1,024
5,120
4,096
9,216
2,048
10,240
8,192 18,432
4,096
20,480
16,384 36,864
Cycles /
Cycles /
Delay (ns) Delay (ns)
operation operation Speed-up
SW
HW
SW
HW
Cycles SW
Cycles
HW
256
4,158,240
26,651
16,243
104
156.0
129,945.0
832.8
512
8,339,061
53,275
16,287
104
156.5
130,297.8
832.4
1024
16,685,145
106,523
16,294
104
156.6
130,352.7
832.2
2048
33,378,432
213,019
16,298
104
156.7
130,384.5
832.1
4096
66,757,768
426,011
16,298
104
156.7
130,386.3
832.1
# Calling
No cache I-D
# Call
Cycles
SW
Cycles
HW
Cycles
SW
256
88,237,730
464,588
5,440,898
512
176,955,459 928,842
Cycles
SW
Cycles
HW
Speed-up Speed-up
SW
HW
30,720
16.2
15.1
5,373,390
30,705
16.4
15.1
10,887,162 60,650
16.3
15.3
10,732,459
60,657
16.5
15.3
16.1
15.4
21,684,326 120,456
16.3
15.4
16.3
15.4
42,875,296 240,162
16.5
15.5
16.3
15.5
85,663,490 480,005
16.5
15.5
Tabla 5.8 Ciclos de trabajo de aplicacin Telephone Billing con memorias Cache
Pgina 51
Como resumen se muestra en la figura 5.9 el speed up al instanciar los coprocesadores en los
diseos propuestos de la suma (Add HW/SW), la multiplicacin (Mult HW/SW) y la aplicacin
Telephone Billing (TB HW/SW).
160
140
Speed up
120
100
80
60
40
20
0
Add HW/SW
Mult HW/SW
TB HW/SW
Applications
En la figura 5.9 mostramos el speed up en los diseos con memorias Cache tanto en las
soluciones HW como SW, la operacin suma con Cache en SW y HW se denomina en la grfica
como Add SW Cache y Add HW Cache respectivamente. Lo mismo ocurre con las operaciones
de multiplicacin y Telephone Billing (TB).
20
18
16
Speed up
14
12
10
8
6
4
2
0
Add SW
Cache
Add HW
Cache
Mult SW
Cache
Mult HW
Cache
TB SW
Cache
TB HW
Cache
Applications
Pgina 52
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
Para obtener una medida aceptable de los ciclos que consume las operaciones DFP
sobre un Soft Coprocessor, fue necesario implementarlos en BRAM a pesar de presentar
una ligera penalizacin en latencia. Al ser implementado sobre una memoria externa
DDRAM surgieron demasiados ciclos innecesarios debido a accesos de memoria
Pgina 53
El reporte de la sntesis muestra que el diseo de la operacin suma muestra una mayor
performance que la multiplicacin tanto en rea como latencia, y los resultados son
comparables con otros diseos.
Aportes
En base a este trabajo se aportan las siguientes investigaciones:
Se realiz la publicacin sobre la implementacin de una multiplicacin en punto flotante
decimal, el trabajo fue presentado en el congreso Reconfigurable Computing and FPGAs
2009.[18].
Se ha realizado una segunda publicacin sobre la operacin suma en punto flotante decimal, la
cual est siendo revisada.
Se est escribiendo un tercer trabajo sobre aceleracin de operaciones matemticas de alta
precisin basados en los mdulos diseados de suma / multiplicacin.
Pgina 54
Diseo e Implementacin de Operaciones Aritmticas en Punto Flotante Decimal segn el Estndar IEEE 754-2008
REFERENCIAS
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
[21]
[22]
[23]
Pgina 55
[24]
[25]
[26]
[27]
[28]
[29]
[30]
[31]
[32]
[33]
[34]
Pgina 56