Design and Implementation of an Arithmetic Processing Unit...

13
Abstract— This paper presents the design and implementation of an arithmetic processing unit based on the logarithmic number system. The proposed implementation is supported in a new set of linear equations, which allows calculating the approximation of the logarithm and antilogarithm binary functions and leads to a maximum relative error of 1x10 -3 % and 5x10 -3 %, respectively. Furthermore, the impact of the logarithmic number system on FPGA for implementing hardware modules to execute multiplication, division, and square root arithmetic operations is also presented and analyzed. In this regards, the analysis takes into account physical resources available on the FPGA, number of clock cycles per arithmetic operation and maximum clock frequency. Experimental results show that using the proposed architecture implemented on the FPGA allows computing multiplication, division and square root operations in only 2 cycles and up to 290.87MHz, obtaining a maximum relative error of 0.015%, 0.018%, and 0.008%, respectively for each one of these arithmetic operations. Keywords— binary logarithm, binary antilogarithm, FPGA, computer arithmetic, logarithmic number system. I. INTRODUCCIÓN L sistema numérico logarítmico (LNS por Logarithmic Number System), es un sistema numérico no convencional que combina la facilidad de implementación y precisión que proporciona el sistema numérico de punto fijo y el intervalo de representación numérico que ofrece el sistema numérico de punto flotante [1]. Debido a que el LNS basa su funcionamiento en las propiedades de las funciones logaritmo y antilogaritmo, este sistema numérico permite realizar operaciones de multiplicación, división y raíz cuadrada haciendo uso de sumas, restas y desplazamientos lógicos en el formato de punto fijo, reduciendo de esta forma la complejidad de la arquitectura hardware de dichas operaciones [2], [3]. A pesar de que en la actualidad existen diversas arquitecturas basadas en aritmética convencional que permiten Este artículo se deriva del Trabajo de Investigación de Maestría titulado “Aproximación del logaritmo y antilogaritmo en base binaria, basada en regiones fraccionarias”, realizado en la Pontificia Universidad Javeriana en el primer semestre del año 2008. S. Carrillo, Universidad de Ulster, Londonderry, Reino Unido, [email protected] H. Carrillo, Universidad de Zaragoza, Zaragoza, España, [email protected] F. Viveros, Pontificia Universidad Javeriana, Bogotá, Colombia, [email protected] la implementación en hardware de este tipo de operaciones aritméticas [4]-[7], esto sigue siendo un problema abierto, dado que las soluciones existentes presentan un elevado consumo de área, potencia y excesivo número de ciclos de reloj para llevar a cabo dichas operaciones. Lo anterior tiene especial relevancia al momento de realizar implementaciones hardware de algoritmos de procesamiento de imágenes [8], [9], donde las restricciones de tiempo real están directamente relacionadas con dichos parámetros. Como ejemplo de lo anterior, en la Fig. 1, se resume el tiempo de procesamiento promedio que les toma a las operaciones aritméticas de punto flotante, al momento de ser utilizadas en la generación de imágenes a través de un modelo 3D. Figura 1. Porcentaje del tiempo promedio de operaciones en punto flotante empleado en la generación de una imagen a través de una modelo en 3D [4]. En este artículo se presenta el diseño e implementación de una unidad de procesamiento aritmético, la cual permite realizar operaciones de multiplicación, división y raíz cuadrada basada en el LNS. Las contribuciones de este artículo son las siguientes: La implementación propuesta en este artículo se soporta en un nuevo conjunto de ecuaciones lineales que permiten hallar la aproximación de las funciones logaritmo y antilogaritmo en base binaria. El error máximo relativo que se presenta al momento de la aproximación de las funciones logaritmo y antilogaritmo binario, se ve disminuido con respecto al estado del arte actual presentado en [4]. Lo que resta de este artículo se encuentra organizado de la siguiente manera: en la sección II, se presentan los antecedentes de los algoritmos propuestos para implementar de forma hardware las funciones de logaritmo y antilogaritmo en base binaria. En la sección III, se describe el método de aproximación por gradientes utilizado para encontrar las S. Carrillo, Member IEEE, H. Carrillo, Member IEEE and F. Viveros, Member IEEE Design and Implementation of an Arithmetic Processing Unit Based on the Logarithmic Number System E IEEE LATIN AMERICA TRANSACTIONS, VOL. 8, NO. 6, DECEMBER 2010 605

Transcript of Design and Implementation of an Arithmetic Processing Unit...

Page 1: Design and Implementation of an Arithmetic Processing Unit ...ewh.ieee.org/reg/9/etrans/ieee/issues/vol08/vol8issue6Dec.2010/8TLA6_01Carrillo.pdfproporciona el sistema numérico de

Abstract— This paper presents the design and implementation

of an arithmetic processing unit based on the logarithmic number system. The proposed implementation is supported in a new set of linear equations, which allows calculating the approximation of the logarithm and antilogarithm binary functions and leads to a maximum relative error of 1x10-3% and 5x10-3%, respectively. Furthermore, the impact of the logarithmic number system on FPGA for implementing hardware modules to execute multiplication, division, and square root arithmetic operations is also presented and analyzed. In this regards, the analysis takes into account physical resources available on the FPGA, number of clock cycles per arithmetic operation and maximum clock frequency. Experimental results show that using the proposed architecture implemented on the FPGA allows computing multiplication, division and square root operations in only 2 cycles and up to 290.87MHz, obtaining a maximum relative error of 0.015%, 0.018%, and 0.008%, respectively for each one of these arithmetic operations.

Keywords— binary logarithm, binary antilogarithm, FPGA, computer arithmetic, logarithmic number system.

I. INTRODUCCIÓN

L sistema numérico logarítmico (LNS por Logarithmic Number System), es un sistema numérico no convencional

que combina la facilidad de implementación y precisión que proporciona el sistema numérico de punto fijo y el intervalo de representación numérico que ofrece el sistema numérico de punto flotante [1]. Debido a que el LNS basa su funcionamiento en las propiedades de las funciones logaritmo y antilogaritmo, este sistema numérico permite realizar operaciones de multiplicación, división y raíz cuadrada haciendo uso de sumas, restas y desplazamientos lógicos en el formato de punto fijo, reduciendo de esta forma la complejidad de la arquitectura hardware de dichas operaciones [2], [3].

A pesar de que en la actualidad existen diversas arquitecturas basadas en aritmética convencional que permiten

Este artículo se deriva del Trabajo de Investigación de Maestría titulado

“Aproximación del logaritmo y antilogaritmo en base binaria, basada en regiones fraccionarias”, realizado en la Pontificia Universidad Javeriana en el primer semestre del año 2008.

S. Carrillo, Universidad de Ulster, Londonderry, Reino Unido, [email protected]

H. Carrillo, Universidad de Zaragoza, Zaragoza, España, [email protected] F. Viveros, Pontificia Universidad Javeriana, Bogotá, Colombia,

[email protected]

la implementación en hardware de este tipo de operaciones aritméticas [4]-[7], esto sigue siendo un problema abierto, dado que las soluciones existentes presentan un elevado consumo de área, potencia y excesivo número de ciclos de reloj para llevar a cabo dichas operaciones. Lo anterior tiene especial relevancia al momento de realizar implementaciones hardware de algoritmos de procesamiento de imágenes [8], [9], donde las restricciones de tiempo real están directamente relacionadas con dichos parámetros. Como ejemplo de lo anterior, en la Fig. 1, se resume el tiempo de procesamiento promedio que les toma a las operaciones aritméticas de punto flotante, al momento de ser utilizadas en la generación de imágenes a través de un modelo 3D.

Figura 1. Porcentaje del tiempo promedio de operaciones en punto flotante empleado en la generación de una imagen a través de una modelo en 3D [4].

En este artículo se presenta el diseño e implementación de

una unidad de procesamiento aritmético, la cual permite realizar operaciones de multiplicación, división y raíz cuadrada basada en el LNS. Las contribuciones de este artículo son las siguientes:

• La implementación propuesta en este artículo se soporta en

un nuevo conjunto de ecuaciones lineales que permiten hallar la aproximación de las funciones logaritmo y antilogaritmo en base binaria.

• El error máximo relativo que se presenta al momento de la aproximación de las funciones logaritmo y antilogaritmo binario, se ve disminuido con respecto al estado del arte actual presentado en [4].

Lo que resta de este artículo se encuentra organizado de la siguiente manera: en la sección II, se presentan los antecedentes de los algoritmos propuestos para implementar de forma hardware las funciones de logaritmo y antilogaritmo en base binaria. En la sección III, se describe el método de aproximación por gradientes utilizado para encontrar las

S. Carrillo, Member IEEE, H. Carrillo, Member IEEE and F. Viveros, Member IEEE

Design and Implementation of an Arithmetic Processing Unit Based on the Logarithmic

Number System

E

IEEE LATIN AMERICA TRANSACTIONS, VOL. 8, NO. 6, DECEMBER 2010 605

Page 2: Design and Implementation of an Arithmetic Processing Unit ...ewh.ieee.org/reg/9/etrans/ieee/issues/vol08/vol8issue6Dec.2010/8TLA6_01Carrillo.pdfproporciona el sistema numérico de

regiones propuestas en este artículo, utilizadas para aproximar las funciones del logaritmo y antilogaritmo binario. En la sección IV, se presenta la unidad de procesamiento aritmético en punto fijo (FXPU por Fixed-Point Processor Unit) basada en el LNS. En la sección V, se presentan los resultados de la síntesis en una FPGA de la FXPU en términos de área, ciclos de reloj y frecuencia máxima de operación. De igual manera se presenta la precisión numérica obtenida para cada una de las operaciones implementadas. Para finalizar, en la sección VI, se presentan las conclusiones derivadas de esta investigación.

II. ANTECEDENTES

El LNS puede ser visto como un caso especial del sistema numérico en punto flotante, donde la mantisa M siempre es 1 y el bit de signo S se hace igual a 0 [1]:

ZS MN 2)1( ××−= (Representación en punto flotante)

ZN 2= (Representación en LNS)

Tomando como punto de partida (2), se puede definir Z

como el resultado de calcular el logaritmo de un número N de la siguiente forma:

)(2 NLogZ =

De igual manera la función inversa del logaritmo en base dos, es decir el antilogaritmo en base binaria, está definida como:

PFPEZ 222 ×=

Donde Z es un número en el sistema numérico en punto fijo, el cual se compone de una parte entera PE y una parte fraccionaria PF . A su vez, su tamaño en bits responde a la siguiente igualdad: nlk =+ , en donde n es el número de bits necesarios para representar a Z . Debido a las propiedades que presenta la función logaritmo relacionadas con la multiplicación y división, es decir:

)()()( YLogXLogYXLog aaa +=×

)()( YLogXLogY

XLog aaa −=

es posible utilizar el LNS para implementar bloques de multiplicadores y divisores haciendo uso únicamente de sumas y restas en punto fijo sobre los logaritmos de los argumentos de entrada, reduciendo de esta forma la complejidad de la arquitectura hardware de operaciones como la multiplicación y la división. En la Tabla 1 se muestran algunas equivalencias entre el LNS y sistema aritmético convencional.

TABLA I EQUIVALENCIA ENTRE ALGUNAS OPERACIONES MATEMÁTICAS BASADAS EN

ARITMÉTICA CONVENCIONAL Y EL SISTEMA NUMÉRICO LOGARÍTMICO

Operación Aritmética

Convencional LNS

Multiplicación yx × YX +

División y

x

YX −

Raíz cuadrada x 1>>X

Suma yx + )21(2XYLogX −++

Resta yx − )21(2

XYLogX −−+

Donde: )(2 xLogX = e )(2 yLogY =

Actualmente los métodos utilizados para obtener la

aproximación de las funciones de logaritmo y antilogaritmo en base binaria, pueden ser clasificados de la siguiente manera:

• Look Up Table (LUT) basadas en interpolación [10].

• Aproximación del logaritmo basado en el algoritmo de

Mitchell [11].

Estudios realizados han demostrado que los métodos basados en interpolación y uso de tablas pueden implementar dicha aproximación con una alta precisión [12], [13], pero estos a su vez requieren un alto costo computacional. Lo anterior se debe a que es necesario almacenar en memoria los coeficientes que definen las funciones logaritmo y antilogaritmo binario, haciendo que el tamaño de la memoria crezca exponencialmente a medida que aumenta el número de bits para representar el argumento de entrada de las funciones.

Por otra parte, el algoritmo de Mitchell [11] no requiere ningún tipo de almacenamiento de coeficientes, debido a que este se basa en calcular la aproximación de acuerdo a la posición del bit más significativo del argumento a evaluar. El anterior algoritmo hace uso de una arquitectura combinatoria que facilita la implementación de forma hardware, pero a su vez incurre en un error mayor del que presentan las LUT basadas en interpolación.

Debido a lo anterior, varias investigaciones [12] han propuesto métodos para reducir el error al momento de calcular el logaritmo de un número utilizando el algoritmo de Mitchell, ya que se ha observado que este algoritmo ofrece un mejor balance entre precisión y desempeño computacional en términos de números de ciclos de reloj necesarios para calcular dichas funciones, comparado con los métodos basados en LUT.

Además, existen diversas aplicaciones en donde es preferible y tolerable un error en la operación realizada a cambio de obtener una mayor velocidad de procesamiento y una reducción del área del circuito, como por ejemplo: la reconstrucción de imágenes en 3D, la generación de imágenes a partir de un modelo (render) y la implementación de filtros digitales, entre otras [5], [8], [9], [14]-[17].

(3)

(4)

(5)

(6)

(1)

(2)

606 IEEE LATIN AMERICA TRANSACTIONS, VOL. 8, NO. 6, DECEMBER 2010

Page 3: Design and Implementation of an Arithmetic Processing Unit ...ewh.ieee.org/reg/9/etrans/ieee/issues/vol08/vol8issue6Dec.2010/8TLA6_01Carrillo.pdfproporciona el sistema numérico de

A. Aproximación del logaritmo en base binaria

Mitchell en [11] fue el primero en desarrollar un algoritmo para aproximar la función del logaritmo mediante una aproximación lineal (ver Fig. 2). La aproximación propuesta en [11] calcula la parte entera del logaritmo de forma exacta, pero introduce un error al momento de calcular la parte fraccionaria del logaritmo. El desarrollo matemático hecho por Mitchell se encuentra resumido a continuación:

Considerando un número binario N en el intervalo 122 +≤< kj N , con jk ≥ . Este puede ser expresado de la

siguiente manera:

}1,0{2 ∈==

k

k

ji

ii ZdondeZN

Asumiendo que KZ representa el bit más significativo, se

tiene que KZ =1 para cualquier número que cumpla jk ≥ . Igualmente, se puede obtener como factor común el término k2 , con lo cual se tendría que:

+=

=

−1

212k

ji

ikik ZN

Expresando el último término de (8) como:

=

−=1

2k

ji

iki Zf

Se obtiene el término f , el cual representa la parte

fraccionaria del número N y se encuentra definido en el intervalo: 10 <≤ f . De esta forma, el valor de entrada N puede ser expresado de la siguiente manera:

)1(2 fN k +=

Al aplicar la función )(2 NLog en ambos lados en (10), se obtiene que:

)1()( 22 fLogkNLog ++=

Donde k y f , son los valores correspondientes a la parte entera y fraccionaria de la función )(2 NLog respectivamente. En [11], se propone aproximar la expresión )1(2 fLog +

mediante una línea recta de la siguiente forma:

βα ×+≈+ ffLog )1(2

Haciendo 0=α y 1=β , con lo cual se deriva la siguiente expresión:

fkNLog Mitchell +=)(2

B. Aproximación del antilogaritmo en base binaria

De igual forma en [11], se propone un algoritmo para aproximar la función antilogaritmo en base binaria. Aprovechando que la parte fraccionaria f del logaritmo se encuentra limitada en el intervalo 10 <≤ f , se puede

aproximar f2 como )1( f+ . A continuación, se expondrá el análisis matemático desarrollado por Mitchell para aproximar la función antilogaritmo binario:

Sea:

fkNLogZ Mitchell +== )(2

Luego, definiendo la función )(2 ZAntiLog de la siguiente

manera: ZZAntiLog 2)(2 =

fkZ fkAntiLog 22)(2 2 ×=+= Se obtiene la aproximación de Mitchell para la función

)(2 ZAntiLog , la cual estima el término correspondiente a la parte fraccionaria del número Z de la siguiente forma:

)1(2 ff +≈

Por lo tanto, la aproximación de Mitchell para la función )(2 ZAntiLog queda definida de la siguiente manera:

)1(2)(2 fZAntiLog k

Mitchell +=

C. Análisis del error del algoritmo de Mitchell

El error producido por la aproximación de Mitchell se deriva de la siguiente manera:

)()( 222

NLogNLogError MitchellLog −=

ffLogErrorLog −+= )1(22

De forma análoga, se realiza el mismo procedimiento para

la aproximación del antilogaritmo obteniendo el siguiente resultado:

)]1(2[22log fError fk

Anti +−=

Como se observa en (20), el error introducido por el

algoritmo de Mitchell se debe únicamente a la parte fraccionaria de la aproximación. Debido a esto, se han propuestos diferentes métodos que buscan mejorar la precisión de la parte fraccionaria de dicha aproximación.

Figura 2. Aproximación mediante línea recta de la función logaritmo en base binaria propuesta por Mitchell [18].

(7)

(8)

(9)

(10)

(11)

(12)

(13)

(14)

(15)

(16)

(18)

(17)

(19)

(21)

(20)

CARRILLO et al.: DESIGN AND IMPLEMENTATION OF 607

Page 4: Design and Implementation of an Arithmetic Processing Unit ...ewh.ieee.org/reg/9/etrans/ieee/issues/vol08/vol8issue6Dec.2010/8TLA6_01Carrillo.pdfproporciona el sistema numérico de

TABLA II COMPARACIÓN DEL PORCENTAJE DE ERROR EN LAS APROXIMACIONES DEL LOGARITMO Y ANTILOGARITMO EN BASE BINARIA

Métricas de Rendimiento Aproximaciones Logaritmo Binario

Aproximaciones Antilogaritmo Binario

Mitchell [11]

Hall [18]

Abed [21]

Kim [4]

Mitchell [11]

Hall [18]

Abed [21]

Kim [4]

Error Máximo Positivo

5.361%

0.126%

0.154%

0.044%

6.148%

0.303%

0.748%

0.082%

Error Máximo Negativo

0.000%

-0.718%

-0.153%

-0.050%

0.000%

-0.474%

0.789%

-0.070%

Rango Máximo Error

5.361%

0.844%

0.307%

0.094%

6.148%

0.777%

1.537%

0.152%

Número de Regiones

1

4

6

8

1

4

6

8

El método más utilizado para mejorar la precisión del

algoritmo de Mitchell es la aproximación basada en regiones fraccionarias. Este método consiste en dividir el intervalo de la parte fraccionaria 10 <≤ f , en regiones más pequeñas. Con el fin de derivar ecuaciones de línea recta para cada sub-intervalo y de esta forma definir un conjunto de ecuaciones que permitan mejorar la precisión de la parte fraccionaria de la aproximación propuesta por Mitchell.

D. Aproximación basada en regiones fraccionarias

Combet et al [19] en 1965 fueron los primeros en proponer una mejora al algoritmo de Mitchell, la cual se caracterizaba por dividir el intervalo de la parte fraccionaria en 4 regiones con el fin de mejorar el error introducido al momento de calcular la parte fraccionaria del logaritmo. El problema con esta nueva aproximación se debe a que los valores encontrados para dichas regiones no son potencias de dos, lo cual hace extremadamente complicando su implementación hardware. Además de lo anterior, dichos valores fueron encontrados por medio del método de ensayo y error, lo cual no garantiza la mejor precisión para la aproximación.

Seguido a esto, Hall et al [18] en 1970 también plantearon el uso de 4 regiones fraccionarias que no eran potencias de dos. Pero a diferencia de las regiones propuestas en [19], los valores hallados para cada región tenían una formalidad matemática basada en la minimización del error cuadrático medio. De igual forma, SanGregory et al [20] en 1999, Abed et al [21] en 2003 y Kim et al [4] en 2006, enfocaron sus esfuerzos en hallar los valores que permitieran definir nuevas regiones, basadas en potencias de dos, para aproximar de una mejor forma las funciones de logaritmo y antilogaritmo binario. Aunque presentan mejoras sucesivas, ninguna de las anteriores aproximaciones plantea alguna herramienta matemática sólida para el cálculo de las regiones.

Hasta el momento el estado del arte en cuanto a la reducción del error de la aproximación de las funciones de dichas funciones, se presenta en la Tabla II.

III. APROXIMACIÓN POR REGIONES FRACCIONARIAS DE LAS

FUNCIONES LOGARITMO Y ANTILOGARITMO BINARIO BASADO

EN EL MÉTODO DEL GRADIENTE DE PASO DESCENDIENTE

El método propuesto en este artículo para mejorar la precisión del algoritmo de Mitchell se encuentra basado en aproximaciones por regiones fraccionarias [22].

Como fue explicado en la sección anterior, este método

consiste en dividir el intervalo 10 <≤ f , donde está definida la

parte fraccionaria del argumento de entrada de las funciones logaritmo y antilogaritmo en base binaria, en pequeñas regiones o sub-intervalos.

Lo anterior se realiza, con el fin de definir un conjunto de ecuaciones de líneas rectas que permitan mejorar la precisión de la parte fraccionaria de la aproximación propuesta por Mitchell. En este artículo se propone encontrar dicho conjunto de ecuaciones haciendo uso del método del gradiente de paso descendiente (MGPD por sus siglas en español).

El MGPD es un método que permite realizar optimizaciones numéricas sobre n variables. Basados en este método, se puede resolver el problema de hallar las ecuaciones de líneas rectas que definen cada una de las regiones minimizando el error relativo.

Dichas ecuaciones se encuentran definidas de la siguiente forma:

10)1(2 <≤×+≈+ fparaffLog βα

10)2(log2 <≤×+≈ fparafAnti f βα

La restricción que se ha impuesto al problema de minimizar

dicha función, es que el conjunto de ecuaciones de líneas rectas tienen que disminuir el error relativo de la aproximación de las funciones del logaritmo y antilogaritmo binario. La razón principal para esto, se debe a que según investigaciones recientes, el error relativo definido en (24) es la métrica de rendimiento más apropiada para medir la precisión en aplicaciones que involucran computación científica [23].

%100)(

)()(

2

_22 ×

−=

NLog

NLogNLogE

aproximadorelativo

El resto de la sección resume la formulación matemática

que soporta al MGPD. La notación que se usara es la siguiente: el vector de evaluación se define como ),( βα=u ,

los subíndices en los vectores se usaran para enfatizar las iteraciones numéricas y el enésimo elemento del vector

(22)

(24)

(23)

608 IEEE LATIN AMERICA TRANSACTIONS, VOL. 8, NO. 6, DECEMBER 2010

Page 5: Design and Implementation of an Arithmetic Processing Unit ...ewh.ieee.org/reg/9/etrans/ieee/issues/vol08/vol8issue6Dec.2010/8TLA6_01Carrillo.pdfproporciona el sistema numérico de

ku usará la notación de doble subíndice nku .

A. Método del gradiente de paso descendiente (MGPD)

En general, si la función )(•f se encuentra definida de

forma algorítmica, es decir, que se tiene una forma de calcular )(uf para cada punto de u , se puede utilizar un método

iterativo para hallar el mínimo de dicha función [24]. Este método debe construir una secuencia de puntos para ku

en nℜ , para ,,2,1,0 =k con el fin de conseguir una solución

convergente para el siguiente problema:

ℜ∈uu paraf )(min

Se puede suponer, sin perder generalidad, que se tiene un punto cualquiera ℜ∈u y se quiere encontrar el siguiente punto 1+ku , de tal forma que se cumpla la siguiente condición:

)(min)(min 1 kk ff uu <+

Para conseguir lo anterior, se debe definir una dirección

kd en nℜ y luego realizar un paso kδ en la siguiente dirección:

kkkk duu δ+=+1

Basados en lo anterior, kd puede ser definida como la

dirección del gradiente de la función )(uf evaluada en el

punto ku , lo cual se puede expresar como )( kf u∇ . Teniendo

en cuenta que 0)( ≠∇ kf u , )( kf u∇ se considera un vector

ortogonal a la tangente de la curva que pasa sobre ku ,

evaluado en cf =∇ )(u . Por consiguiente, la dirección de la tasa

de máximo incremento de la función )( kf u∇ es ortogonal a la

función evaluada en ese punto [24]. En otras palabras, el gradiente actúa en la dirección tal que

para un pequeño desplazamiento de kδ , la función f se

incrementa o disminuye mucho más en la dirección del gradiente que en cualquier otra dirección. Debido a lo anterior, la dirección en la cual apunta )( kf u∇ y )( kf u−∇ es la

dirección de máximo crecimiento y disminución de la función )(uf evaluada en ku , respectivamente (ver Fig. 3). Por

consiguiente, la dirección en la que apunta el gradiente negativo es la mejor dirección para encontrar el mínimo de la función )(uf . Sin perder generalidad, se puede utilizar

0u como punto inicial y )( 00 uu f∇−δ como el siguiente punto.

Luego, haciendo uso del teorema de Taylor [26] se obtiene que:

[ ] )()()()(2

0000 δδδ offff +∇−=∇− uuuu

Tomando 0)( 0 ≠∇ uf y para un paso lo suficientemente

pequeño de 0>δ , se deriva la siguiente expresión:

[ ] )(min)(min 000 uuu fff <∇− δ

Figura 3. Descripción gráfica del paso descendiente por gradiente, donde se muestra una secuencia de pasos del gradiente evaluado en el punto 1u en

forma descendente, en busca del valor óptimo *x [25].

Por lo tanto, el punto )( 00 uu f∇−δ se puede considerar como

una mejora comparado con el punto 0u , cuando se desea

encontrar el mínimo de la función )(uf .

De igual forma, de lo anterior se deriva que el MGPD es un algoritmo basado en gradiente donde el tamaño del paso kδ es

escogido para minimizar [ ] )()( 000 uuu fff <∇−δ en cada paso

empezando desde ku , para luego realizar una búsqueda lineal

en la dirección )( kf u−∇ hasta que el mínimo 1+ku es

encontrado.

B. Búsqueda de regiones fraccionarias a partir de un algoritmo recursivo basado en MGPD

El anterior procedimiento permite plantear la siguiente ecuación recursiva:

)(1 kkkk f uuu ∇−=+ δ

Basados en (30), se puede hacer uso de un algoritmo

iterativo para hallar el conjunto de ecuaciones necesarias para aproximar las funciones del logaritmo y antilogaritmo binarios, como se muestra en la Fig. 4.

Debido a que los coeficientes tienen que ser potencias de dos, para evitar la pérdida de precisión y facilitar la posterior implementación hardware, se decidió tomar como tamaño del

paso de gradiente 162−=kδ .

1) Dado un punto inicial ku y una restricción ε , hacer 1=k

2) Seleccionar una dirección descendente para kd

3) Realizar una búsqueda lineal en la dirección de kd , esto es:

[ ]kk df δ−+1min u

4) Hacer kkk dδ−= +1uu

5) Probar la convergencia:

Si )()( 1 kk uu εε >+

Entonces PARAR y kuu ≅*

Sino IR al paso 6 6) Hacer 1+= kk e IR al paso 2

Figura 4. Algoritmo utilizado para hallar las regiones basado en el MGDC.

(25)

(28)

(27)

(26)

(30)

(29)

CARRILLO et al.: DESIGN AND IMPLEMENTATION OF 609

Page 6: Design and Implementation of an Arithmetic Processing Unit ...ewh.ieee.org/reg/9/etrans/ieee/issues/vol08/vol8issue6Dec.2010/8TLA6_01Carrillo.pdfproporciona el sistema numérico de

TABLA III RESULTADOS DEL BANCO DE PRUEBAS EFECTUADO SOBRE LA APROXIMACIÓN DEL LOGARITMO Y ANTILOGARITMO BASADA EN REGIONES FRACCIONARIAS

Métricas de rendimiento Aproximaciones Logaritmo Binario Aproximaciones Antilogaritmo Binario

Kim [4] (2006)

Carrillo et al (2008)

Kim [4] (2006)

Carrillo et al (2008)

Número de Regiones 8 8 16 32 8 8 16 32 Error

Máximo Positivo

0.044%

0.019%

0.005%

0.001%

0.082%

0.053%

0.015%

0.005% Error

Máximo Negativo

-0.050%

-0.019%

-0.007%

-0.001%

-0.070%

-0.047%

-0.012%

-0.003% Rango

Máximo Error

0.094%

0.038%

0.012%

0.002%

0.152%

0.100%

0.027%

0.008% Media del Error 2.30E-3 5.23E-4 3.26E-5 4.99E-5 -3.34E-2 -1.45E-2 -3.50E-3 -7.01E-4

Varianza del Error 1.03E-5 7.07E-6 6.67E-7 2.67E-8 3.28E-6 7.84E-4 4.94E-5 3.28E-6

En este punto de la discusión es importante enfatizar que

tomar un valor más pequeño para el paso de gradiente kδ , es

proporcional a mejorar la precisión de los valores que se quieren hallar.

Sin embargo, ese mismo decremento del tamaño se ve reflejado en una sobrecarga computacional en términos de tiempo de ejecución al momento de realizar la búsqueda lineal, debido a que el número de iteraciones crece de forma exponencial como consecuencia del decremento del tamaño del paso del gradiente kδ [24].

C. Aproximación de las funciones logaritmo y antilogaritmo binario, basado en 8, 16 y 32 regiones fraccionarias

Haciendo uso del algoritmo iterativo mostrado en la Fig. 4

para la búsqueda de regiones fraccionarias basado en el MGPD, se obtuvieron un conjunto de ecuaciones de línea recta que definen nuevas aproximaciones para las funciones de logaritmo y antilogaritmo en base binaria, con 8, 16 y 32 regiones fraccionarias.

En la sección de Apéndices se puede ver la Tabla IX, Tabla X, Tabla XI y Tabla XII, que resumen los conjuntos de ecuaciones propuestas en este artículo para minimizar el error relativo de las aproximaciones del logaritmo y antilogaritmo binario basado en 8, 16 y 32 regiones, respectivamente.

Para verificar el correcto funcionamiento de esta nueva aproximación y determinar los errores máximos producidos para cada una de las regiones propuestas, se realizó una simulación conjunta entre Matlab® y Modelsim®. La cual consistió en patrones de pruebas para calcular las funciones logaritmo y antilogaritmo binario, tomando como argumento de entrada todo el rango de valores entre 2021 ≤≤ N , así como

también 202 valores aleatorios, con la siguiente restricción: 3221 22 ≤≤ N . Donde N , el argumento de entrada de dichas funciones, se define como un número entero en ambos casos.

En la tabla III, se muestran los resultados obtenidos para cada una de las regiones propuestas como aproximaciones para las funciones de logaritmo y antilogaritmo en base binaria.

Para finalizar esta sección, se presenta un ejemplo para ilustrar el uso de las ecuaciones para aproximar el logaritmo y el antilogaritmo en base binaria.

Ejemplo 1: En este ejemplo se propone calcular el )65(2 dLog , haciendo

uso de la aproximación propuesta para la función logaritmo en base binaria basado en regiones fraccionarias. • Primero se considera la representación binaria de

bd 100000165 =

• La parte entera de la aproximación del logaritmo en base binaria corresponde a la posición del bit más significativo de

bd 100000165 = , es decir bdk 1106 ==

• La parte fraccionaria está representada por los bits a la derecha del bit más significativo de bd 100000165 = ,

es decir bdf 000001.0015625.0 ==

• Basados en (10), d65 puede ser representado

como: dbN 65)000001.01(26 =+=

• Con bdf 000001.0015625.0 == , las regiones fraccionarias

para la función de logaritmo en base binaria quedan definidas de la siguiente manera:

• Aproximación utilizando 8 regiones con 8

10 << f

0230.0)2116(1024

1392 16 =×+= −ffmejorado

0230.6)65(2 =apróximadoLog

0224.6)65(2 =teóricoLog

%0107.0−=relativoError

• Aproximación utilizando 16 regiones con 16

10 << f

0225.0)244(1024

1433 16 =×+= −ffmejorado

0225.6)65(2 =approxLog

0224.6)65(2 =teóricoLog

%0028.0−=relativoError

• Aproximación utilizando 32 regiones con 32

10 << f

0223.0)28(1024

1454 16 =×+= −ffmejorado

0223.6)65(2 =approxLog

0224.6)65(2 =teóricoLog

%108738.9 4−×=relativoError

610 IEEE LATIN AMERICA TRANSACTIONS, VOL. 8, NO. 6, DECEMBER 2010

Page 7: Design and Implementation of an Arithmetic Processing Unit ...ewh.ieee.org/reg/9/etrans/ieee/issues/vol08/vol8issue6Dec.2010/8TLA6_01Carrillo.pdfproporciona el sistema numérico de

IV. UNIDAD DE PROCESAMIENTO ARITMÉTICO LOGARÍTMICO

La arquitectura de 32 bits propuesta en este artículo para realizar procesamiento de datos en punto fijo (FXPU), fue implementada en una FPGA Stratix II referencia EP2S180F1508C3 [27]. Dicha arquitectura está en capacidad de realizar las operaciones de: multiplicación, división y raíz cuadrada, basada en el LNS. La arquitectura general de la FXPU está compuesta por tres módulos, los cuales se detallan a continuación:

A. Módulo aproximación log2

Este primer módulo se encarga de calcular el logaritmo en base binaria para un argumento de entrada de 32 bits ( 2S ) y entrega como salida dos vectores: uno de 5 bits ( 4S ) correspondiente al resultado de la parte entera del logaritmo y el segundo de 32 bits ( 5S ) correspondiente a la parte fraccionaria aproximada del logaritmo. Para lograr esto, este módulo se divide en tres bloques funcionales, que se detallan a continuación (ver Fig. 5):

• Aproximación mitchell: este bloque se compone de un

codificador de prioridad y una lógica combinatoria que permite determinar cuál es la posición del bit más significativo (MSB por Most Significant Bit) del dato de entrada 2S .

El MSB del dato de entrada permite determinar el valor correspondiente a la parte entera del logaritmo ( 4S ). De la misma forma, con la ayuda de la lógica combinatoria y la señal de selección de desplazamiento ( 2SI ), se calcula cuáles son los bits que corresponde a la parte fraccionaria de la aproximación del logaritmo.

• Radix dos: este bloque recibe como entrada la parte

fraccionaria de la aproximación de Mitchell. Con base en esta información y con la ayuda de un comparador con cero se evalúa la mantisa. Lo anterior, con el fin de determinar si el dato de entrada es o no una potencia de dos.

Si la mantisa del dato de entrada es igual a cero, se concluye que el dato es una potencia de dos y por lo tanto no es necesario efectuar ninguna aproximación por regiones. Lo anterior se debe a que al evaluar el logaritmo en base binaria sobre un número que es potencia de dos, el resultado de dicho logaritmo siempre es un número entero.

Si por el contrario, el dato de entrada no es potencia de dos, se procede a efectuar la aproximación por regiones, ya que este resultado está compuesto por una parte entera y una parte fraccionaria.

• Regiones fraccionarias: este bloque recibe como entrada

la parte fraccionaria obtenida a partir de la aproximación de Mitchell. Para realizar la arquitectura interna de este bloque, se prevé dos tipos de implementación: una a partir de multiplicadores embebidos en la FPGA (EM por Embedded Multipliers) [27] y otra haciendo uso del algoritmo Multiplierless Multiple Constant Multiplier (MCM por sus siglas en inglés) [28].

Fig. 5. Diagrama de bloques del módulo aproximación 2Log .

El algoritmo MCM se basa en descomponer la constante a

multiplicar en una sumatoria de potencias de dos, para luego buscar los factores comunes y de esta manera utilizar la menor cantidad de bloques de sumadores/restadores y registros de desplazamientos. Dicho método presenta una mejora de hasta 20% menos de sumadores/restadores que los métodos convencionales como el CSD (por Canonical Signed Digit) [28], [29]

La Tabla IV muestra una comparación del impacto en el

número de bloques de suma/resta y desplazamiento lógico necesarios para realizar la siguiente multiplicación: f×957 , haciendo uso de ambos algoritmos

TABLA IV

COMPARACIÓN ENTRE LOS ALGORITMOS MCM [28] Y EL CSD [29]

Suma y desplazamiento convencional fffffffff +×+×+×+×+×+×+×=× 481632128256512957

Se hacen necesarios 8 bloques para realizar desplazamientos lógicos a la izquierda y 7 bloques de sumadores/restadores Multiplierless Multiple Constant Multiplier

( )( ) ( )fffff −×−×−×=× 46416957

Se hacen necesarios 3 bloques para realizar desplazamientos lógicos a la izquierda y 3 bloques de sumadores/restadores

La Fig. 6 muestra el diagrama de bloques para

implementar la multiplicación f×957 , haciendo uso del MCM. De igual forma, las Fig. 7 y Fig. 8, muestran la implementación haciendo uso de 8 regiones fraccionarias para el logaritmo y antilogaritmo respectivamente. En el apéndice de este artículo se encuentran detalladas cada una de las ecuaciones implementadas.

Figura 6. Diagrama de bloques de la implementación f×957 utilizando el

algoritmo MCM.

CARRILLO et al.: DESIGN AND IMPLEMENTATION OF 611

Page 8: Design and Implementation of an Arithmetic Processing Unit ...ewh.ieee.org/reg/9/etrans/ieee/issues/vol08/vol8issue6Dec.2010/8TLA6_01Carrillo.pdfproporciona el sistema numérico de

Figura 7. Diagrama de bloques de la implementación de la aproximación del logaritmo binario utilizando 8 regiones fraccionarias, basado en MCM.

Figura 8. Diagrama de bloques de la implementación de la aproximación del antilogaritmo binario utilizando 8 regiones fraccionarias, basado en MCM.

B. Módulo selección de operación

Este módulo se encarga de realizar las operaciones aritméticas de multiplicación, división y raíz cuadrada disponibles en la FXPU, previamente seleccionadas mediante la señal ( 1S ), como se muestra en la Fig. 9. Se reciben como argumentos de entrada la parte entera ( 4S y 6S ) y fraccionaria de la aproximación del logaritmo ( 5S y 7S ), procedentes del módulo Aproximación log2. Posteriormente, estos valores son sumados, restados o desplazados a la derecha dependiendo si se desea realizar multiplicación, división o raíz cuadrada, respectivamente (ver Tabla V).

Figura 9. Diagrama de bloques del módulo selección operación.

TABLA V OPERACIONES ARITMÉTICAS IMPLEMENTADAS EN LA UNIDAD DE

PROCESAMIENTO ARITMÉTICO LOGARÍTMICO

Señal de selección (s1) Operación LNS

00b Multiplicación YX + 01b División YX − 10b Raíz cuadrada 1>>X

C. Módulo aproximación Antilog2

Este tercer módulo se encarga de realizar el antilogaritmo binario, para esto recibe como argumentos de entrada dos vectores ( 12S y 13S ): uno de 5 bits y otro de 32 bits, correspondientes al valor de la parte entera y fraccionaria del logaritmo respectivamente. Estos argumentos son posteriormente procesados en cuatro bloques funcionales, los cuales se detallarán a continuación (Ver Fig. 10):

• Radix dos: evalúa si el dato de entrada es una potencia de

dos. Su arquitectura y funcionamiento es igual al bloque utilizado para aproximar la función 2Log .

• Regiones fraccionarias: realiza la aproximación del antilogaritmo sobre el valor de la parte fraccionaria del valor de entrada. Su arquitectura y funcionamiento es igual al bloque utilizado para aproximar la función 2Log .

• Decodificador: recibe como entrada, el valor de la parte

entera del logaritmo y devuelve a la salida un vector de ceros, excepto en la posición del bit correspondiente al valor de entrada. Este valor corresponderá al bit más significativo de la parte entera del valor del antilogaritmo binario.

• Concatenador: se encarga de concatenar el resultado

obtenido entre la parte entera y la parte fraccionaria del logaritmo binario. Tomando como referencia la señal de entrada ( 7SI ), se determina cuantos bits corresponderán a la parte entera y fraccionaria del resultado respectivamente.

Figura 10. Diagrama de bloques del módulo aproximación antilog2.

A continuación se presentan las consideraciones que se

tuvieron en cuenta al momento de diseñar las etapas de pipeline que se incorporaron a la unidad de procesamiento aritmético logarítmico.

612 IEEE LATIN AMERICA TRANSACTIONS, VOL. 8, NO. 6, DECEMBER 2010

Page 9: Design and Implementation of an Arithmetic Processing Unit ...ewh.ieee.org/reg/9/etrans/ieee/issues/vol08/vol8issue6Dec.2010/8TLA6_01Carrillo.pdfproporciona el sistema numérico de

D. Unidad de procesamiento aritmético logarítmico: implementación de las etapas de pipeline

Adicional a los tres módulos presentados previamente, en la FXPU se implementaron etapas de pipeline, el cual es una técnica que permite aumentar la cantidad de dato que pueden ser procesados en una unidad de tiempo (Throughput). Para conseguir esto, se debe encontrar un balance entre la ruta de datos que tiene el retraso más grande dentro del sistema y el número de etapas de pipeline (pipe-stage) que se desean implementar dentro de este [30]. Durante la etapa de diseño e implementación de la FXPU, se detectaron tres rutas de datos críticas:

• Módulo aproximación log2: la ruta crítica de este módulo

está definida desde el momento en que se recibe el dato de entrada ( 2S o 3S ), hasta que se obtiene el resultado fraccionario. El cual tiene que pasar a través de la red combinatoria que describe cada una de las regiones fraccionarias. Este recorrido tiene un retraso aproximado entre 33.992ns y 44.222ns.

• Módulo selección operación: la ruta crítica de este módulo está determinada por el tipo de operación a realizar. El retraso máximo se encuentra entre 30.545ns y 42.500ns aproximadamente.

• Módulo aproximación antilog2: este módulo, al igual que

el módulo aproximación log2, tiene asociado la ruta crítica de datos al camino más largo que se encuentra en el bloque que implementa la aproximación por regiones. Su retraso máximo está entre 25.059ns y 40.439ns aproximadamente.

Debido a que el retraso en cada uno de los tres módulos es

aproximadamente igual, se implementaron dos etapas de pipeline, con el fin de equilibrar el camino crítico en la arquitectura de la FXPU, tal como se muestra en la Fig. 11. Además, teniendo en cuenta que la arquitectura interna de un elemento lógico (ALM por Adaptative Logic Module) en la Stratix II tiene dos registros programables, cada etapa de pipeline se implementó con bancos de registros tipo D. Lo cual a su vez no incrementa el número de elementos lógicos necesarios para describir la FXPU sin pipeline, dado que estos registros están disponibles dentro de cada ALM [27].

V. PRUEBAS Y RESULTADOS

A continuación se presentan los resultados obtenidos al evaluar las operaciones aritméticas de multiplicación, división y raíz cuadrada, haciendo uso del LNS.

Para comprobar el funcionamiento de cada una de las operaciones, se realizó un banco de pruebas (testbench) a nivel de RTL (por Register Transfer Logic) mediante la herramienta Modelsim®, el cual tenía como patrón de entrada

202 valores aleatorios para cada una de las operaciones aritméticas, con la siguiente restricción: 3221 ≤≤ N . Donde N , el argumento de entrada para cada de las operaciones, es un número entero. La arquitectura de dicho banco de pruebas, se puede ver en la Fig. 12.

Dicho patrón de pruebas, ejercitó cada uno de los caminos lógicos de la FXPU, permitiendo obtener a la salida los valores de cada una de las operaciones aritméticas evaluadas. Posteriormente se procedió a analizar de forma estadística en Matlab® cada una de los resultados obtenidos, con el fin de determinar métricas estadísticas, tales como los errores máximos producido por la aproximación para cada una de las operaciones aritméticas, así como también la media y la variancia de dichos errores.

Figura 11. Diagrama de bloques de la FXPU basada en el LNS implementada con 2 etapas de pipeline.

En la tabla VI se presentan los resultados obtenidos para

cada una de las operaciones aritméticas basadas en el LNS. Las tablas VII y VIII resumen la síntesis de la FXPU, tanto para la versión combinatoria como para la versión con 2 etapas de pipeline, haciendo uso de multiplicadores embebidos (EM) y el algoritmo MCM respectivamente.

Se observa que al utilizar el algoritmo MCM para implementar las 8, 16 y 32 regiones para aproximar el logaritmo y el antilogaritmo binario, estas dos últimas presentan una mayor frecuencia de operación.

Lo anterior se debe a que las constantes halladas para 16 y 32 regiones tienen más factores comunes que las constantes halladas para implementar las 8 regiones, lo cual permite reducir el camino crítico entre sumadores y los registros de desplazamientos.

Figura 12. Combinación del banco de pruebas y una herramienta de análisis estadístico para la evaluación de resultados.

CARRILLO et al.: DESIGN AND IMPLEMENTATION OF 613

Page 10: Design and Implementation of an Arithmetic Processing Unit ...ewh.ieee.org/reg/9/etrans/ieee/issues/vol08/vol8issue6Dec.2010/8TLA6_01Carrillo.pdfproporciona el sistema numérico de

TABLA VI RESULTADOS DEL BANCO DE PRUEBAS EFECTUADO SOBRE CADA UNA DE LA

OPERACIONES DE LA FXPU

Kim et al

(2006) Carrillo et al

(2008) Número de Regiones

8 8 16 32

Multiplicación Error

Máximo Positivo

0.294%

0.158%

0.047%

0.015% Error

Máximo Negativo

-0.318%

-0.285%

-0.106%

-0.021% Rango

Máximo Error

0.612%

0.443%

0.153%

0.036% Media del Error 1.42E-1 -1.30E-1 -5.12E-2 -9.90E-3

Varianza del Error 2.40E-3 3.40E-3 1.54E-4 7.88E-6 División

Error Máximo Positivo

0.287%

0.219%

0.075%

0.018%

Error Máximo Negativo

-0.340%

-0.228%

-0.073%

-0.016%

Rango Máximo Error

0.627%

0.447%

0.148%

0.034%

Media del Error -1.45E-1 -1.45E-1 -4.98E-2 -1.03E-2 Varianza del Error 4.30E-3 1.30E-6 2.32E-4 1.05E-5

Raíz Cuadrada Error

Máximo Positivo

0.122%

0.076%

0,020%

0.007% Error

Máximo Negativo

-0.134%

-0.095%

-0.030%

-0.008% Rango

Máximo Error

0.256%

0.171%

0.050%

0.015% Media del Error -1.77E-2 -1.06E-2 -3.30E-3 -3.65E-4

Varianza del Error 1.80E-3 1.30E-3 8.83E-5 4.86E-6

TABLA VII

RESULTADOS DE LA IMPLEMENTACIÓN DE LA FXPU UTILIZANDO EMBEDDED

MULTIPLIERS (EM), EN LA FPGA STRATIX II EP2S180F1508C3

Recursos

Disponibles FXPU

8 regiones EM

FXPU 16 regiones

EM

FXPU 32 regiones

EM Combinatorio

ALUT 894 1144 1852 EM 192 376 736 PIN 130 130 130

Frecuencia Máxima (MHz)

17.68

15.89

12.93

Potencia consumida (mW)

1290.88

1290.82

1290.83

Con 2 Etapas de Pipeline ALUT 879 1120 1868

EM 192 376 736 PIN 131 131 131

Frecuencia Máxima (MHz)

187.30

224.27

238.61

Potencia consumida (mW)

1443.33

1290.79

1291.00

VI. CONCLUSIONES

Las conclusiones de esta investigación se pueden dividir en dos secciones: la primera, relacionada con el desarrollo teórico de las aproximaciones propuestas para las funciones

2Log y 2AntiLog , y una segunda sección que presenta los

resultados de la síntesis en la FPGA de cada una de las aproximaciones propuestas y la implementación de la FXPU con 2 etapas de pipeline.

TABLA VIII RESULTADOS DE LA IMPLEMENTACIÓN DE LA FXPU UTILIZANDO MCM, EN LA

FPGA STRATIX II EP2S180F1508C3

Recursos

Disponibles FXPU

8 regiones MCM

FXPU 16 regiones

MCM

FXPU 32 regiones

MCM Combinatorio

ALUT 2333 3203 6062 EM 0 0 0 PIN 130 130 130

Frecuencia Máxima (MHz)

17.22

15.48

12.36

Potencia Consumida (mW)

1290.85

1291.00

1290.60

Con 2 Etapas de Pipeline ALUT 2239 3125 5979

EM 0 0 0 PIN 131 131 131

Frecuencia Máxima (MHz)

245.58

285.88

290.87

Potencia Consumida (mW)

1480.10

1290.30

1290.78

A. Aproximación de las funciones log2 y antilog2: Algoritmo y Regiones

Se propuso un nuevo conjunto de ecuaciones lineales que mejoran la precisión al aproximar la parte fraccionaria de las funciones del logaritmo y antilogaritmo en base binaria. Dicho conjunto de ecuaciones fue encontrado mediante un algoritmo iterativo basado en el método del gradiente de paso descendiente. Este nuevo conjunto de ecuaciones que representa la parte fraccionaria del logaritmo y antilogaritmo binario con 8, 16 y 32 regiones, presentan un error máximo entre

%001.0%019.0 y para la función 2Log y entre

%005.0%053.0 y para la función 2AntiLog , dependiendo del

número de regiones que se utilicen para aproximar dichas funciones.

Comparando estos resultados con los presentados en [4], este nuevo conjunto de ecuaciones lineales presentan una mejora al estado del arte hasta en un %97 , tanto para el logaritmo binario como para el antilogaritmo binario, en lo que al máximo error relativo se refiere.

B. Aproximación de las funciones log2 y Antilog2: Síntesis en la FPGA

Con base en el conjunto de ecuaciones propuestas en este artículo para aproximar las funciones de logaritmo y antilogaritmo binario, se presentó el diseño e implementación de la arquitectura de una unidad aritmética logarítmica, capaz de efectuar operaciones de multiplicación, división y raíz cuadrada dentro del sistema numérico logarítmico (LNS).

Se realizaron dos tipos de implementaciones para cada una de las regiones que componen las aproximaciones de logaritmo y antilogaritmo.

• La primera implementación utilizó bloques de

multiplicadores embebidos (EM) en la FPGA con el fin de implementar los multiplicadores necesarios para describir de forma hardware el nuevo conjunto de

614 IEEE LATIN AMERICA TRANSACTIONS, VOL. 8, NO. 6, DECEMBER 2010

Page 11: Design and Implementation of an Arithmetic Processing Unit ...ewh.ieee.org/reg/9/etrans/ieee/issues/vol08/vol8issue6Dec.2010/8TLA6_01Carrillo.pdfproporciona el sistema numérico de

ecuaciones lineales del tipo: βα ×+ f . Lo anterior hace posible llevar a cabo la implementación de las regiones fraccionarias propuesta en este artículo.

• La segunda implementación está basada en el algoritmo Multiplierless Multiple Constant Multipler (MCM) [29]. Debido a que esta segunda implementación, a diferencia de la que utiliza EM, tiene en cuenta los factores comunes de las distintas constantes con el fin de reducir el camino crítico entre los sumadores y los registros de desplazamientos, necesarios para implementar la multiplicación sin multiplicadores embebidos, se logró una disminución de hasta un %38 en el área necesaria para la síntesis en la FPGA.

Para finalizar, la arquitectura propuesta en este artículo

permitió implementar bloques hardware para realizar las operaciones de multiplicación, división y raíz cuadrada, haciendo uso de sumas, restas y desplazamientos lógicos en punto fijo sobre los logaritmos de los argumentos de entrada, en sólo dos ciclos de reloj y a una frecuencia máxima de 290.87 MHz, en un FPGA de la familia Stratix II.

APÉNDICE: ECUACIONES PROPUESTAS PARA APROXIMAR LA

PARTE FRACCIONARIA DE LAS FUNCIONES LOG2 Y ANTILOG2

TABLA IX ECUACIONES QUE DEFINEN LA APROXIMACIÓN DEL LOGARITMO Y

ANTILOGARITMO EN BASE BINARIA UTILIZANDO 8 REGIONES FRACCIONARIAS Regiones Logaritmo Antilogaritmo

8

10 << f )2116(

1024

1392 16−×+f )2 65501(1024

742 16−×+f

8

2

8

1 <≤ f )21135(1024

1255 16−×+f )264969(1024

808 16−×+f

8

3

8

2 <≤ f )22946(1024

1136 16−×+f )263384(1024

881 16−×+f

8

4

8

3 <≤ f )25296(1024

1035 16−×+f )261886(1024

961 16−×+f

8

5

8

4 <≤ f )27729(1024

957 16−×+f )259101(1024

1048 16−×+f

8

6

8

5 <≤ f )210636(1024

882 16−×+f )255302(1024

1143 16−×+f

8

7

8

6 <≤ f )213299(1024

825 16−×+f )250306(1024

1247 16−×+f

8

8

8

7 <≤ f )216824(1024

761 16−×+f )244032(1024

1359 16−×+f

TABLA X ECUACIONES QUE DEFINEN LA APROXIMACIÓN DEL LOGARITMO Y

ANTILOGARITMO EN BASE BINARIA UTILIZANDO 16 REGIONES FRACCIONARIAS Regiones Logaritmo Antilogaritmo

16

10 << f )244(

1024

1433 16−×+f )265526(1024

726 16−×+f

16

2

16

1 <≤ f )2321(1024

1356 16−×+f )265402(1024

757 16−×+f

16

3

16

2 <≤ f )2862(1024

1285 16−×+f )265131(1024

791 16−×+f

16

4

16

3 <≤ f )21666(1024

1216 16−×+f )264710(1024

826 16−×+f

16

5

16

4 <≤ f )2257(1024

1158 16−×+f )264135(1024

862 16−×+f

16

6

16

5 <≤ f )23643(1024

1104 16−×+f )263378(1024

900 16−×+f

16

7

16

6 <≤ f )2482(1024

1054 16−×+f )262421(1024

940 16−×+f

16

8

16

7 <≤ f )26212(1024

1004 16−×+f )261216(1024

983 16−×+f

16

9

16

8 <≤ f )27106(1024

976 16−×+f )259838(1024

1026 16−×+f

16

10

16

9 <≤ f )28720(1024

930 16−×+f )258218(1024

1071 16−×+f

16

11

16

10 <≤ f )210312(1024

890 16−×+f )256339(1024

1118 16−×+f

16

12

16

11 <≤ f )211090(1024

872 16−×+f )254141(1024

1168 16−×+f

16

13

16

12 <≤ f )213027(1024

831 16−×+f )251644(1024

1220 16−×+f

16

14

16

13 <≤ f )21442(1024

804 16−×+f )248836(1024

1274 16−×+f

16

15

16

14 <≤ f )215872(1024

778 16−×+f )245699(1024

1330 16−×+f

16

16

16

15 <≤ f )217723(1024

747 16−×+f )242160(1024

1389 16−×+f

CARRILLO et al.: DESIGN AND IMPLEMENTATION OF 615

Page 12: Design and Implementation of an Arithmetic Processing Unit ...ewh.ieee.org/reg/9/etrans/ieee/issues/vol08/vol8issue6Dec.2010/8TLA6_01Carrillo.pdfproporciona el sistema numérico de

TABLA XI ECUACIONES QUE DEFINEN LA APROXIMACIÓN DEL LOGARITMO Y

ANTILOGARITMO EN BASE BINARIA UTILIZANDO 32 REGIONES FRACCIONARIAS

(PARTE I)

Regiones Logaritmo Antilogaritmo

32

10 << f )28(

1024

1454 16−×+f )265533(1024

718 16−×+f

32

2

32

1 <≤ f )285(1024

1414 16−×+f )265503(1024

733 16−×+f

32

3

32

2 <≤ f )2238(1024

1374 16−×+f )265440(1024

749 16−×+f

32

4

32

3 <≤ f )2472(1024

1334 16−×+f )265337(1024

766 16−×+f

32

5

32

4 <≤ f )2736(1024

1300 16−×+f )265210(1024

782 16−×+f

32

6

32

5 <≤ f )21099(1024

1263 16−×+f )265030(1024

800 16−×+f

32

7

32

6 <≤ f )21478(1024

1231 16−×+f )264825(1024

817 16−×+f

32

8

32

7 <≤ f )21921(1024

1199 16−×+f )264588(1024

834 16−×+f

32

9

32

8 <≤ f )22379(1024

1170 16−×+f )264286(1024

853 16−×+f

32

10

32

9 <≤ f )22897(1024

1141 16−×+f )263944(1024

872 16−×+f

32

11

32

10 <≤ f )23412(1024

1115 16−×+f )263585(1024

890 16−×+f

32

12

32

11 <≤ f )24002(1024

1088 16−×+f )263146(1024

910 16−×+f

32

13

32

12 <≤ f )24550(1024

1065 16−×+f )262668(1024

930 16−×+f

32

14

32

13 <≤ f )25196(1024

1040 16−×+f )262122(1024

951 16−×+f

32

15

32

14 <≤ f )25810(1024

1018 16−×+f )261533(1024

972 16−×+f

32

16

32

15 <≤ f )26437(1024

997 16−×+f )260903(1024

993 16−×+f

32

17

32

16 <≤ f )27072(1024

977 16−×+f )260198(1024

1015 16−×+f

32

18

32

17 <≤ f )27783(1024

956 16−×+f )259461(1024

1037 16−×+f

32

19

32

18 <≤ f )28429(1024

938 16−×+f )258622(1024

1060 16−×+f

32

20

32

19 <≤ f )29148(1024

919 16−×+f )257747(1024

1083 16−×+f

32

21

32

20 <≤ f )29825(1024

902 16−×+f )256828(1024

1106 16−×+f

32

22

32

21 <≤ f )210536(1024

885 16−×+f )255821(1024

1130 16−×+f

32

23

32

22 <≤ f )211237(1024

869 16−×+f )254722(1024

1155 16−×+f

32

24

32

23 <≤ f )211970(1024

853 16−×+f )253527(1024

1181 16−×+f

32

25

32

24 <≤ f )212687(1024

838 16−×+f )252278(1024

1207 16−×+f

32

26

32

25 <≤ f )213436(1024

823 16−×+f )250978(1024

1233 16−×+f

TABLA XII ECUACIONES QUE DEFINEN LA APROXIMACIÓN DEL LOGARITMO Y

ANTILOGARITMO EN BASE BINARIA UTILIZANDO 32 REGIONES FRACCIONARIAS (PARTE II)

Regiones Logaritmo Antilogaritmo

32

27

32

26 <≤ f )214162(1024

809 16−×+f )249574(1024

1260 16−×+f

32

28

32

27 <≤ f )214916(1024

795 16−×+f )248062(1024

1288 16−×+f

32

29

32

28 <≤ f )215586(1024

783 16−×+f )246494(1024

1316 16−×+f

32

30

32

29 <≤ f )216337(1024

770 16−×+f )244811(1024

1345 16−×+f

32

31

32

30 <≤ f )217115(1024

757 16−×+f )243071(1024

1374 16−×+f

32

32

32

31 <≤ f )218108(1024

741 16−×+f )241211(1024

1404 16−×+f

REFERENCIAS

[1] I. Koren, Computer Arithmetic Algorithms, Second Edition, A. K. Peters, Natick, MA, 2002.

[2] J.-H. Sohn, R. Woo, and H.-J. Yoo, “A programmable vertex shader with fixed-point SIMD datapath for low power wireless applications,” in Proc. SIGGRAPH/Eurographics Workshop on Graphics Hardware, 2004, vol. 1, pp. 107–114.

[3] Mahalingam, V.; Ranganathan, N. An efficient and accurate logarithmic multiplier based on operand decomposition. 19th International Conference on VLSI Design, 2006. Held jointly with 5th International Conference on Embedded Systems and Design. 3-7 Jan. 2006 Page(s): 6 pp.

[4] H. Kim, B. Nam, H. Woo and J. “A 231MHz, 2.18mW 32-bit Logarithmic Arithmetic unit for Fixed-Point 3D Graphics system” IEEE Journal of solid State Circuits, vol. 41, Nov. 2006.

[5] K. Yosida, T. Sakamoto, and T. Hase, “A 3D graphics library for 32-bit microprocessors for embedded systems” IEEE Trtans. Consum, Electron., vol. 4, no 4, pp. 1107-1114, Aug. 1998.

[6] Oklobdzija, V.G.; Zeydel, B.R.; Dao, H.Q.; Mathew, S.; Krishnamurthy, R.;. “Comparison of high-performance VLSI adders in the energy-delay space” IEEE Trans. VLSI, vol. 13, no. 6, pp. 754-758, June. 2005.

[7] V. Paliouras and T. Stouraitis, “Logarithm Number System for Low Power Arithmetic,” Proc. Int’l Workshop Power and Timing Modeling Optimization and Simulation, pp. 285-294, 2000.

[8] A. M. Cavalcante, C. R. L. Francês, G. P. d. S. Cavalcante, J. C. W. A. Costa, M. J. d. Sousa, "A New Parallel Approach for 3D Ray-Tracing Techniques in the Radio Propagation Prediction", IEEE LATIN AMERICA TRANSACTIONS, Vol. 5, No. 5, pp. 271-279, Sept. 2007.

[9] M. Azul Gonzalez, V. Laura Ballarin, "Image segmentation using Watershed Transform: Marker definition based on fuzzy logic.", IEEE LATIN AMERICA TRANSACTIONS, Vol. 6, No. 2, pp. 223-228, June 2008.

[10] T.A. Brubaker and J.C. Becker, “Multiplication Using Logarithms Implemented with Read-Only-Memory,” IEEE Trans. Computers, pp. 761-766, 1975.

[11] J.N. Mitchell, “Computer Multiplication and Division using Binary Logarithms,” IRE Trans. Electronic Computers, pp. 512-517, vol. 11, Aug. 1962.

[12] Mahalingam, V.; Ranganathan, N. “Improving accuracy in Mitchell´s Logarithmic Multiplication Using Operand Decomposition” IEEE Trans. Computers, vol. 55, no. 12, pp. 1523-1535, Dec. 2006.

[13] D.M. Lewis, “Interleaved Memory Function Interpolators With Application to Accurate LNS Arithmetic Unit,” IEEE Trans. Computers, vol. 43, no. 8, pp. 974-982, Aug. 1994.

616 IEEE LATIN AMERICA TRANSACTIONS, VOL. 8, NO. 6, DECEMBER 2010

Page 13: Design and Implementation of an Arithmetic Processing Unit ...ewh.ieee.org/reg/9/etrans/ieee/issues/vol08/vol8issue6Dec.2010/8TLA6_01Carrillo.pdfproporciona el sistema numérico de

[14] M.J. Duncan, “Improved Mitchell Based Logarithmic Multiplier for Low Power DSP Applications,” IEEE Int’l System on a Chip Conf. (SOCC), pp. 17-20, 2003.

[15] N.G. Kingsbury and P.J.W. Rayner, “Digital Filtering Using Logarithmic Arithmetic,” IEEE Electronic Letters, pp. 56-58, Jan. 1971.

[16] J.-H. Sohn, R. Woo, and H.-J. Yoo, “A programmable vertex shader with fixed-point SIMD datapath for low power wireless applications,” in Proc. SIGGRAPH/Eurographics Workshop on Graphics Hardware, 2004, vol. 1, pp. 107–114.

[17] M.G. Arnold and C. Walter, “Unrestricted Faithful Rounding Is Good Enough for Some LNS Applications,” Proc. IEEE Symp. Computer Arithmetic, pp. 56-58, 2001.

[18] E.L. Hall, D.D. Lynch, and S.J. Dwyer III, “Generation of Products and Quotients Using Approximate Binary Logarithms for Digital Filtering Applications,” IEEE Trans. Computers, vol. 19, no. 2, pp. 97-105, Feb. 1970.

[19] M. Combet, H. Zonneveld, and L. Verbeek, “Computation of the Base Two Logarithm of Binary Numbers,” IEEE Trans. Electronic Computers, pp. 863-867, Dec. 1965.

[20] S.L. SanGregory, R.E. Siferd, C. Brother, and D. Gallagher, “Low- Power Logarithm Approximation with CMOS VLSI Implementation,” Proc. IEEE Midwest Symp. Circuits and Systems, Aug. 1999.

[21] K.H. Abed and R. Siferd, “CMOS VLSI Implementation of a Low-Power Logarithmic Converter,” IEEE Trans. Computers, vol. 52, no. 11, pp. 1421-1433, Nov. 2003.

[22] Snaider Carrillo “Aproximación del logaritmo y antilogaritmo en base binaria, basada en regiones fraccionarias”, Tesis de Maestría, dirigida por Franciso Viveros, Departamento de Ingeniería Electrónica, Pontificia Universidad Javeriana, Bogotá - Colombia, Mayo 2008.

[23] T. Lang; J.D. Bruguera. “A hardware error estimate for floating-point computations” SPIE Conference. Advanced Signal Processing Algorithms, Architectures and Implementations XVIII, San Diego (USA) (2008).

[24] A. Ruszczynski. Nonlinear Optimization. Princeton University Press Princeton, NJ, USA, 2006.

[25] J. Nocedal and S. Wright. Numerical Optimization. Springer, 1999. [26] B. Kalantari. Generalization of Taylor’s theorem and Newton’s

method via a new family of determinant interpolation formulas and its applications. Journal of Computational and Applied Mathematics, 126(1-2):287–318, 2000.

[27] “Altera Corporation. Startix II FPGA Device Handbook,” http://www.altera.com/literature/hb/stx2/stratix2_handbook.pdf

[28] Y. Voronenko and M. Puschel. Multiplierless Multiple Constant Multiplication. ACM Transaction on Algorithm, Vol. 3, No. 2, 2007.

[29] A. Avizienis. Signed-digit Number Representation for Fast Parallel Arithmetic. IRE Transaction on Electronic computer, EC- 10, 389-400, 1961.

[30] J. Hennessy, D. Patterson. Computer Architecture: A Quantitative Approach, Fourth Edition, Morgan Kaufmann, MA, 2006.

Snaider Carrillo Lindado, Ingeniero Electrónico de la Universidad del Norte (Barranquilla - Colombia), 2006. Magister en Ingeniería Electrónica de la Pontificia Universidad Javeriana (Bogotá - Colombia), 2008. Estudiante de Doctorado de la Universidad de Ulster (Londonderry – UK). Áreas de investigación: interconexión de sistemas electrónicos, arquitectura de computadores, aritmética

computacional y diseño de sistemas digitales.

Henry Carrillo Lindado, Ingeniero Electrónico de la Universidad del Norte (Barranquilla - Colombia), 2007. Magister en Ingeniería Electrónica de la Pontificia Universidad Javeriana (Bogotá - Colombia), 2010. Estudiante de Doctorado de la Universidad de Zaragoza (Zaragoza - España). Áreas de investigación: visión por computador, machine learning, robótica móvil, aritmética computacional y diseño de sistemas

digitales.

Francisco Viveros Moreno, Ingeniero Electrónico de la Pontifica Universidad Javeriana (Bogotá - Colombia), 1971. Profesor Titular de la Pontificia Universidad Javeriana. Director del Grupo de Investigación MIMESIS: educación apoyada en tecnología. Áreas de investigación: arquitectura de computadores, diseño de sistemas digitales, investigación en educación, enseñanza y aprendizaje en el aula, métodos y técnicas de enseñanza.

CARRILLO et al.: DESIGN AND IMPLEMENTATION OF 617