• No se han encontrado resultados

Si bien en esta tesis no se diseñó la arquitectura para llevar a cabo la raíz cuadrada DFP, en este apartado se efectúa un análisis de las operaciones involucradas para poder realizar esta operación.

Como sucede con la implementación hardware de todas las operaciones aritméticas punto flotante, para implementar un circuito que compute la raíz cuadrada DFP, el núcleo principal es la implementación de algoritmo que lleva a cabo la raíz cuadrada radix-10 punto fijo.

A continuación, se detallan los pasos requeridos para la implementación de raíz cuadrada DFP conforme al estándar IEEE 754-2008. Un valor DFP conforme al estándar (véase capítulo 2, sección 2.3), está conformado por el signo, la mantisa y el

del exponente y de la mantisa. El formato del operando v, es (-1)sx10qxvm, donde s

corresponde al signo, vm a la mantisa y q al exponente. Nótese que vm no se encuentra

normalizado y se interpreta como entero (véase tabla 2.4). Por consiguiente, se debe ajustar el exponente de modo que considere vm con el formato Q0.p. Para ello

v = vmx10q = 0.vm x10q+p

donde 0.vm posee formato Q0.p. Obsérvese que 0.vm se encuentra en [0, 1), debido a que

puede poseer ceros iniciales luego del punto. En consecuencia, se deben eliminar estos ceros iniciales y realizar el correspondiente ajuste de exponente, 0.vm = vm'10-z, donde z

es la cantidad de ceros iniciales. Nótese que vm' posee formato Q0.p y se encuentra en

[0.1, 1). Entonces: z p q m v v y= = '10 + − (5.23)

Para que el resultado y se encuentre conforme al estándar IEEE 754-2008,

considere y = ymx10t, donde el valor ym se corresponde a la mantisa, no se encuentra

normalizado y se interpreta como entero.

Como ' m

v se determina mediante la implementación del algoritmo punto fijo

5.2, éste posee formato Q0.p en [0.3, 1). Sea e=q+p-z, se identifican dos casos:

i) cuando e es par ' 2 10 m e v y= (5.24)

para que ymse encuentre en formato Qp.0, se toma

p m m v y = ' 10 (5.25) reemplazando (5.25) en (5.24) se obtiene p e m y y= 10 2− (5.26) con t= e2p. ii) cuando e es impar

 2 10 '

10 m

e

v

y= (5.27)

sea c= 10=3.16227766.... , se toman los p dígitos más significativos de c de modo que se encuentre en formato Q1.p-1. En consecuencia

 2 '

10e c vm

el resultado de la operación ' m v

c , posee formato Q1.p-1 y se encuentra en [1, 10 ). Por consiguiente, para que ym se encuentre en Qp.0, se toma

1 ' 10 − = p m m c v y (5.29) reemplazando (5.29) en (5.28) se obtiene  2 1 10 − + = e p m y y (5.30) con t=

 

e2p+1.

5.5. Conclusiones del capítulo y trabajo futuro

En este trabajo se propone la implementación eficiente de la operación raíz cuadrada radix-10 en punto fijo sobre dispositivos basados en LUTs de 6 entradas de Xilinx. La solución propuesta implementa el método iterativo mediante recurrencia de dígitos basado en la técnica de restoring. Vale mencionar que los diseños e implementaciones que se encuentran en este capítulo se publicaron en [Vaz14].

Esta propuesta presenta como aporte principal, el mecanismo de selección del dígito perteneciente al resultado en cada iteración, el cuál posibilita la simplificación de la operación de restauración en el caso de requerirse. Se basa primero en encontrar un dígito mediante el cociente entre dos operandos de tamaño pequeño (dividendo de tres dígitos y divisor de dos dígitos). La implementación de la división realizada se basa en el uso de tablas. Si el dígito encontrado, h, no es el requerido y se necesita restaurar, se analizó y demostró que solo se necesita explorar dos números, h-1 y h-2, para seleccionar el dígito correcto.

La implementación se basa en la utilización de la lógica de propagación de acarreo de suma binaria que se encuentra en estos dispositivos. Se usaron las estrategias expuestas en el capítulo 3 para las operaciones de suma y resta de números naturales BCD que intervienen en el diseño. Además se usaron las ideas novedosas de [Din10b] para implementar el multiplicador BCD de (p+1)×1-dígitos (véase apartado 4.3.4.1). Otro componente diseñado para usar la lógica eficiente de acarreo, es el comparador de dos números BCD (Cmp) presente en el divisor.

Si bien esta propuesta no instancia los componentes dedicados que se encuentran en los dispositivos seleccionados, como es el caso de multiplicadores, o bloques de memoria RAM, etc, instancia los componentes genéricos LUT y muxcy utilizados en la implementación eficiente de la propagación de acarreo en la suma binaria. Esto lleva a que el diseño no sea genérico, solo puede ser aplicable a los dispositivos pertenecientes a las familias de dispositivos de Xilinx basados en LUTs de 6 entradas.

Para que la propuesta se pueda implementar en cualquier dispositivo de lógica programable (o tecnología ASIC) independientemente del fabricante, lo único que se

requiere es sustituir la instanciación de estos componentes por su correspondiente descripción en VHDL.

Las implementaciones se realizaron en dispositivos Virtex 7 de Xilinx con speed grade 3, se consideraron las precisiones involucradas en el estándar, esto es p=7,16 ó 34. Considerando las mejores alternativas, es decir aquellas basadas en las ideas de [Din10a], se obtuvo que las velocidades de operación son: 102 MHz para p=7, 97 MHz para p=16, y 89 MHz con p=34. En donde la latencia del circuito es p ciclos de reloj.

Se realizaron comparaciones con las propuestas de los trabajos [Erc09] y [Erc10]. Para ello, se efectuaron implementaciones sobre los mismos dispositivos y utilizaron las mismas precisiones. Respecto a [Erc09], las soluciones propuestas en esta tesis obtienen aceleraciones que se encuentran entre el 13% y 35%, y penalizaciones en área que van desde 64% hasta el 83%. Considerando las implementaciones de [Erc10], las soluciones propuestas poseen aceleraciones entre 29% y 42%, con menor ocupación de LUTs para p=7,8 ó 16 (entre -11% y -6%), y un aumento de 2% de uso de LUTs para p=32.

Relacionado con el diseño e implementación de la raíz cuadrada radix-10 basada en recurrencia de dígitos se proponen las siguientes líneas de trabajo futuro:

- Con la finalidad de disminuir el consumo de área, se propone analizar y mejorar de ser posible, el diseño del módulo división div desarrollado en este trabajo.

- Profundizar el estudio de las técnicas de recurrencia de dígitos desarrolladas por Milos Ercegovac en [Erc09] y [Erc10], con el objeto de incrementar su eficiencia a partir del uso de los recursos dedicados para propagación de acarreo de suma binaria que se encuentran en los dispositivos.

- Explorar e implementar de manera eficiente en dispositivos de Xilinx, otros métodos de recurrencia de dígitos, tales caso de SRT, non-restoring, etc - Realizar el diseño e implementación de la raíz cuadrada DFP conforme al

estándar IEEE 754-2008. Considerando para ello, el tratamiento de excepciones y el manejo de diferentes técnicas de redondeo.

CAPÍTULO 6

Conclusiones