0% encontró este documento útil (0 votos)
500 vistas306 páginas

Congreso FPGAs 2011 Tenerife PDF

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
500 vistas306 páginas

Congreso FPGAs 2011 Tenerife PDF

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

LIBRO DE RESÚMENES

DEL 7 AL 9 DE SEPTIEMBRE DE 2011


UNIVERSIDAD DE LA LAGUNA
Reservados todos los derechos. Ni la totalidad ni parte de este libro
pueden reproducirse o transmitirse por ningún procedimiento
electrónico o mecánico, incluyendo fotocopia, grabación magnética o
cualquier almacenamiento de información o sistema de reproducción,
sin permiso previo y por escrito de los titulares del copyright

Título: XI Jornadas de Computación Reconfigurable y Aplicaciones

Editores: Manuel Rodríguez y Eduardo Magdaleno


Maquetación: Eduardo Magdaleno y Santiago Magdaleno
Diseño de portada: Moisés Domínguez
I.S.B.N.: 978-84-614-8814-8
Depósito Legal: TF-751-2011
Impresión: Fotocopias Mateo
BIENVENIDA DEL COMITÉ ORGANIZADOR

Es un placer dar la bienvenida a todos los participantes a las XI Jornadas de Computación


Reconfigurable y Aplicaciones en nombre de su Comité Organizador y que en la presente
edición se celebra en la Universidad de La Laguna organizado por el Área de Tecnología
Electrónica.

Como en pasadas ediciones, JCRA 2011 se convierte en un lugar de encuentro entre personas y
de intercambio de conocimientos en un campo donde constituye la reunión más importante que,
a nivel nacional, se celebra en el campo de las tecnologías asociadas a la lógica reconfigurable.

Para finalizar, la isla de Tenerife nos ofrece un marco incomparable para la celebración de este
evento, posibilitando a los participantes disfrutar de sus paisajes, gastronomía, historia y de la
hospitalidad de sus habitantes.

Feliz estancia.

Manuel Rodríguez Valido


Eduardo Magdaleno Castelló
Coordinadores generales del JCRA 2011
JCRA 2011 | Tenerife 7-9 de Septiembre

PRÓLOGO

Las Jornadas de Computación Reconfigurables y Aplicaciones (JCRA) reúnen anualmente a


investigadores españoles y latinoamericanos que diseñan sistemas basados en FPGAs. El
congreso, fundado por Sergio Cuenca de la Universidad de Alicante en 2001, es uno de los más
antiguos del mundo. Sólo es superado por las “3F” (FPL, FPGA y FCCM) y por el RAW. El
resto de la larga lista de reuniones en esta área es posterior al JCRA.

España sin duda es un país dado a las FPGAs. Esta relación probablemente se origina por la
escasa implantación en la industria local de tecnologías alternativas como Gate Arrays o
Standard Cells, que ya existían en los años ´90. Los ingenieros españoles acogieron la lógica
programable sin preconceptos, y sin la necesidad de descartar opciones que de otro modo
estarían formando parte de sus productos. En otros países, los usuarios de FPGAs debieron
vencer durante años la resistencia de los especialistas en las tecnologías que estos dispositivos
iban a reemplazar. Gracias a los esfuerzos de los ingenieros de producto de ATD y ADM
comenzaron a ser utilizadas rápidamente por empresas punteras como PESA, CESELSA o
Alcatel. También ayudó la rápida incorporación de estos chips en la docencia de grado. Como
ejemplo, en 1989 ya eran obligatorios en el Laboratorio de Electrónica Digital de la ETSIT
UPM.

Fabricar un ASIC programable por el usuario era un tema que estaba maduro en la década de los
´80. Las primeras FPGAs de Xilinx - originariamente llamadas LCAs (Logic Cell Arrays) –
salieron al mercado en 1985. La nueva idea era sencilla y se basaba en 3 conceptos conocidos.
En primer lugar, utilizar multiplexores para realizar funciones lógicas, en lugar del típico arreglo
de transistores P y N de los gate arrays. Esta aplicación particular de los multiplexores era
enseñada de generación en generación a los estudiantes de Circuitos Lógicos desde la época de
los TTL pues que permitía ahorrar chips, soldaduras y pistas.

1
La segunda innovación también era sencilla y estaba a la vista de todos. La red telefónica de la
época no requería tender un hilo de cobre fijo entre cada par de abonados. En su lugar, existía
una interconexión matricial de cables que se iban conectando mediante conmutadores hasta
formar una unión galvánica entre los puntos a enlazar. Lo que valía para teléfonos también
valdría para los circuitos integrados: no era necesario realizar la metalización fija final de los
masked-programmed chips para mapear un diseño particular sobre una estructura VLSI estándar.
Sólo se necesitaba difundir en el silicio un patrón de pistas más un conjunto de recursos de
interconexión. Entre ambos formarían caminos programables mediante multiplexores y llaves
CMOS activadas por el usuario.

La última idea de las FPGAs era consecuencia de las anteriores: una memoria almacenaría todos
los valores de configuración del dispositivo. En el caso de Xilinx, esta memoria era externa y se
utilizaría una cadena de scan-path para ingresar los bits para configurar los multiplexores que
mapeaban las funciones lógicas y los elementos que rutaban las señales internas. Altera sorteó el
problema mediante una EPROM interna, Lattice con una EEPROM también interna, y Actel con
antifusibles. Sin embargo, los inconvenientes evidentes de la solución de Xilinx no produjeron
rechazo alguno: la utilización de una EPROM auxiliar para arrancar un circuito programable
complejo era algo cotidiano para los miles usuarios de microprocesadores.

Las FPGAs fueron inventadas con la idea de evitar los riesgos de fabricar un masked-ASIC. Este
proceso temible era parecido (y sigue siéndolo) a escribir un programa que se puede compilar
una única vez. Por ello, la reconfigurabilidad se consideraba una característica esencial para
poder corregir los errores de diseño. Pero hubo muchas sorpresas. Poner a disposición de miles
de ingenieros e investigadores un producto como la FPGA, que permite probar soluciones sin
más coste que el tiempo que lleva implementarlas, fue como soltar conejos en Australia.

Los usuarios de μP y DSPs descubrieron que solidificar los algoritmos en el silicio producía
unas aceleraciones muy importantes. Poner 100 multiplicadores en lugar de pasar 100 veces los
datos por el multiplicador de la ALU del procesador realmente cambiaba la cosa. Nacen así los
primeros custom DSPs. Otros ingenieros montaron centenas de FPGAs en tarjetas y racks, junto
con memorias, FIFOS y matrices de conmutación, de modo de poder abordar problemas de
mayor tamaño. Surge así un nuevo acrónimo, FCCMs (FPGA-based custom computer
machines), para indicar supercomputación a precios populares.

Diseñadores inquietos encontraron aplicaciones muy ingeniosas. El hardware upgrade sólo


requería enviar a un cliente una nueva EPROM o reconfigurar de manera remota. Se podía hacer
que un equipo realice diferentes funciones a lo largo del tiempo (entre ellas, autoverificarse)
simplemente mapeando diferentes configuraciones e ideando un mecanismo de carga. Si estas
reconfiguraciones obedecían a causas externas, entonces se podía pensar en circuitos adaptativos
e incluso evolutivos. Un procesador podía configurar una FPGA auxiliar antes correr un
programa, obteniendo así un coprocesador custom con las funciones especiales requeridas para
el cómputo. Otra idea novedosa era realizar un autotest y reprogramar la FPGA para evitar una
parte defectuosa del chip, creándose así un hardware cicatrizable. Finalmente, desde el punto de

2
JCRA 2011 | Tenerife 7-9 de Septiembre

vista de producción, la programabilidad de los dispositivos resultó crucial para poder manejar el
stock de componentes electrónicos en áreas como las telecomunicaciones, donde los cambios de
estándares son aún vertiginosos. Y todas estas opciones están disponibles sin necesidad de
asumir el riesgo de fabricar un circuito integrado. Como decía el irrepetible Peter Alfke de
Xilinx: “nosotros fabricamos ASICs pero vendemos FPGAs”.

Hoy en día la tecnología FPGA es omnipresente en comunicaciones, discos duros, automoción,


cómputo intensivo, aplicaciones militares, en incluso productos de consumo masivo. Las
desventajas en velocidad y energía respecto a un masked-ASIC se compensan de dos modos. Por
un lado, las compañías de FPGAs (todas fabless) debido a su alto volumen de producción y la
regularidad de sus circuitos, acceden en primer lugar a nuevas foundries con las tecnologías de
fabricación más avanzadas, Por otro lado, los dispositivos incluyen cada vez más bloques
hardwired dentro del chip, que evitan el mayor retardo o consumo de la alternativa equivalente
reprogramable. A ello se suman las nuevas combinaciones on-chip de procesador más FPGAs,
que una y otra vez aparecen en la historia de estos dispositivos.

Este libro, editado por los profesores Manuel Rodríguez Valido y Eduardo Magdaleno Castelló
de la Universidad de La Laguna, es una fotografía actual de la diversidad de temas de
investigación y aplicaciones relacionados con FPGAs. Cabe destacar las aportaciones en Diseño
de System-on-Chips, Microscopía, Robótica, Custom DSPs, Procesamiento de Imágenes,
Educación, Benchmarking, Supercomputación, Bioingeniería, Análisis Financiero, o codiseño
HW. Los lectores de este libro encontrarán 37 artículos separados en 9 capítulos, que con
seguridad serán fuente de motivación y nuevas ideas para avanzar en este apasionante campo
tecnológico.

Eduardo Boemo
Universidad Autónoma de Madrid

3
JCRA 2011 | Tenerife 7-9 de Septiembre

ÍNDICE

Coordinadores generales ...................................................................................7


Comité local......................................................................................................7
Comité de dirección ..........................................................................................7
Comité de programa..........................................................................................8
Sesión I: Arquitectura y Diseño de SoC I .........................................................9
Sesión II: FPGAs versus Multicores/GPUs ....................................................41
Sesión III: Aritmética Computacional ............................................................75
Sesión IV: Sistemas Tolerantes a Errores/Test .............................................107
Sesión V: Educación .....................................................................................139
Sesión VI: Arquitectura y Diseño de SoC II .................................................165
Sesión VII: Codiseño HW/SW y Procesadores Embebidos..........................197
Sesión VIII: DSP...........................................................................................225
Sesión IX: Metodologías de Diseño..............................................................259
Índice de autores ...........................................................................................299
Patrocinadores...............................................................................................301

5
6
JCRA 2011 | Tenerife 7-9 de Septiembre

COORDINADORES GENERALES
Manuel Rodríguez Valido
Universidad de La Laguna
Eduardo Magdaleno Castelló
Universidad de La Laguna

COMITÉ LOCAL
Alejandro Ayala Alfonso
Universidad de La Laguna
Silvestre Rodríguez Pérez
Universidad de La Laguna
Oswaldo González Hernández
Universidad de La Laguna
Beatriz Rodríguez Mendoza
Universidad de La Laguna
Moisés Domínguez García
Universidad de La Laguna
Fernando Pérez Nava
Universidad de La Laguna
David Díaz Martín
Universidad de La Laguna
Cristian Sobota Rodríguez
Universidad de La Laguna

COMITÉ DE DIRECCIÓN
Gustavo Sutter Capristo
Universidad Autónoma de Madrid
Miguel Ángel Aguirre Echánove
Universidad de Sevilla
Eduardo Boemo Scalvinoni
Universidad Autónoma de Madrid
Joan Cabestany
Universidad Politécnica de Cataluña
Jordi Carrabina Bordoll
Universidad Autónoma de Barcelona
Sergio Cuenca Asensi
Universidad de Alicante, Coordinador
Denis Navarro
Universidad de Zaragoza
Francisco Pelayo Valle
Universidad de Granada
Juan Manuel Sánchez Pérez
Universidad de Extremadura
José Ignacio Martínez Torre
Universidad Rey Juan Carlos
Juan Suardíaz Muro
Universidad Politécnica de Cartagena

7
COMITÉ DE PROGRAMA
Gustavo Sutter Capristo José Luis Martín González
Universidad Autónoma de Madrid Universidad del País Vasco
Nelson Acosta Manuel Mazo Quintas
Universidad Nacional del Centro, Argentina Universidad de Alcalá de Henares
Miguel Ángel Aguirre Echánove Javier Morán Carreras
Universidad de Sevilla SIDSA, Madrid
Carlos Amuchastegui Manuel Moreno Aróstegui
Universidad del País Vasco Universidad Politécnica de Cataluña
Eduardo Boemo Scalvinoni Fernando Pardo
Universidad Autónoma de Madrid Universidad de Valencia
Joan Cabestany Francisco Pelayo Valle
Universidad Politécnica de Cataluña Universidad de Granada
João M. P. Cardoso Antoni Portero
Universidade do Porto/FEUP (Portugal) Universidad Autónoma de Barcelona
Jordi Carrabina Bordoll Alberto Prieto Espinosa
Universidad Autónoma de Barcelona Universidad de Granada
Javier Castillo Villar Lluis Ribas
Universidad Rey Juan Carlos Universidad Autónoma de Barcelona
Sergio Cuenca Asensi Fernando Rincón
Universidad de Alicante Universidad de Castilla la Mancha
Eduardo de la Torre Eduardo Ros
Universidad Politécnica de Madrid Universidad de Granada
Jean Pierre Deschamps Ricard Sanahuja
Universidad Rovira i Virgill Universidad Politécnica de Cataluña
Luis Entrena Arrontes Juan Manuel Sánchez Pérez
Universidad Carlos III de Madrid Universidad Extremadura
Joan Figueras Eduardo Sánchez
Universidad Autónoma de Madrid Escuela Politécnica Federal de Laussane, Suiza
Antonio García Ríos César Sanz Álvaro
Universidad de Granada Universidad Politécnica de Madrid
Francisco Gómez Arribas Moisés Serra
Universidad Autónoma de Madrid Universidad de Vic
Juan Antonio Gómez Pulido Juan José Serrano Martín
Universidad de Extremadura Universidad Politécnica de Valencia
Diego Gómez Vela Jose T. de Sousa
Universidad de Cádiz INESC-ID Lisboa (Portugal)
Jose Maria Granado Criado Lluis Terés
Universidad de Extremadura Centro Nacional de Microelectrónica, CSIC,
Román Hermida Barcelona
Universidad Complutense de Madrid Antonio Torralba
Francisco Ibarra Picó Universidad de Sevilla
Universidad de Alicante José Torres
Andrés Iborra Universidad de Valencia
Universidad Politécnica de Cartagena Javier Valls Coquillat
Sergio López-Buedo Universidad Politécnica de Valencia
Universidad Autónoma de Madrid Miguel Ángel Vega Rodríguez
Enrique Mandado Pérez Universidad Extremadura
Universidad de Vigo Juan Suardíaz Muro
Francisco Javier Marín Martín Universidad Politécnica de Cartagena
Universidad de Málaga

8
JCRA 2011 | Tenerife 7-9 de Septiembre

SESIÓN I:
ARQUITECTURA Y DISEÑO DE SOC I

Gabor Filters Implementation on FPGAs..................................................................................... 11

Motion Estimation Core for Resource-Limited Systems ............................................................. 19

Filtro IIR Configurable Confiable para Aplicaciones de Control de un Volante de Levitación


Magnética..................................................................................................................................... 27

Configurable-System-on-Programmable-Chip implementation of a Global Navigation Satellite


Systems Receiver ......................................................................................................................... 35

9
10
JCRA 2011 | Tenerife 7-9 de Septiembre

Gabor Filters Implementation on FPGAs


(1)∗ (1) (2)
Juan M. Schenini , Domenec Puig , Jean-Pierre Deschamps ,
(1)
Jaime Melendez
(1) IRCV Group, Dept. of Computer Eng. and Maths, Rovira i Virgili University, Tarragona, Spain

(2) Dept. of Electronic, Electric and Automatic Eng., Rovira i Virgili University, Tarragona, Spain

Abstract On the other hand, methodologies based


on FPGAs and similar devices have reached
Gabor lters are linear lters widely used as a maturity that allows the design and imple-
multipurpose feature extraction methods in mentation of complex systems on portable so-
computer vision and image processing tasks. lutions. In this scheme, FPGA devices can
The need for fast and ecient implementa- play an important role due to their optimized
tions of Gabor lters has increased the inter- size and power consumption and, at the same
est in FPGAs due to their low design costs time, high performance and on-chip interfac-
and the possibility of recongurability. In this ing capabilities. Furthermore, a portable vi-
paper, we present a review of the implemen- sion system is of potential interest for multiple
tations of Gabor lters on FPGAs and also applications in many mobile domains such as
propose new ideas for future improvements of robotic vision [2], video surveillance [3], auto-
those approaches. motive [4], etc.

Currently, there are several hardware de-


scription languages (HDL) that help to reduce
1 Introduction
the complexity and the development time in

During the last decades, the application of Ga- phases of rapid prototyping and validation.

bor lters to computer vision problems has These languages propose dierent design ab-

been constantly increasing. In this sense, the straction levels. As a result, in short time, this

research have been focused on improving both has led to the quick development of specic

the eciency and the response time of the pro- hardware designs for a wide range of applica-

posals, but as a result, their complexity has tions. Following those motivations, this paper

increased. discusses dierent types of FPGA implemen-

Gabor lters were originally introduced by tations of Gabor lters and proposes possible

Dennis Gabor in [1]. Since then, they have future improvements.

become a widely used method in computer


vision. Two-dimensional Gabor lters have The organization of the paper is as follows.
been used in many applications such as image In section 2, a brief description of the Gabor
processing, image classication, texture seg- lters is introduced. Then, section 3 presents
mentation and pattern recognition. However, a revision of the most noticeable implementa-
Gabor lters perform computationally expen- tions of Gabor lters on FPGAs during the
sive operations. This has driven, in recent last years. In Section 4, we propose the prin-
years, hardware implementations for calculat- ciples for a new implementation on FPGAs of
ing those operations. a bank of Gabor lters that has been success-

Corresponding author: fully applied to pattern recognition. Finally,
E-mail : [Link]@[Link] conclusions are given in Section 5.

11
Sesión I: Arquitectura y Diseño de SoC I

(a) Real component (b) Imaginary component

Figure 1: Two-dimensional Gabor lters

2 On the Gabor Filters thought of as a local band-pass lter with cer-


tain optimal joint localization properties in
In the space domain, a two-dimensional Ga- both the spatial and the spatial frequency do-
bor function g(x, y) is a complex sinusoidal main.
wave modulated by a two-dimensional Gaus- It is possible to congure Gabor lters to
sian function with aspect ratio λ, scale param- have various shapes, bandwidths, center fre-
eter σ and major axis orientation φ [5] (see quencies and orientations by varying their re-
Figure 1): lated parameters. Hence, they are generally
0 0
 used as a lter bank that covers specic re-
g(x, y) = f x , y exp [2πi (U x, V y)] ,
gions of the frequency plane.
where Under such scheme, when Gabor lters are
applied to the eld of computer vision and
x0 , y 0

= (xcosφ + ysinφ, −xsinφ + ycosφ) pattern recognition, an input image is typi-
cally decomposed into a number of ltered im-
are rotated coordinates, and
ages, each containing intensity variations over
(x/λ)2 + y 2
 
1 a narrow range of frequencies and orientations.
 
f (x, y) = exp − . Measures computed from these ltered images
2πλσ 2 2σ 2
(e.g., [6, 7]) can be used as features for either
It corresponds to a shifted Gaussian in the texture analysis, image segmentation or clas-
spatial frequency domain: sication.
The main reason that makes Gabor lters
G(u, v) = appealing for signal processing tasks is that
n h 2 2 io Gabor functions are able to minimize the un-
exp −2π 2 σ 2 u0 − U 0 λ2 + v 0 − V 0 , certainty relationship between the time (or
space) and frequency domains. In addition,
where
there is physiological evidence that shows that
2-D Gabor lters can approximate the simple
u0 , v 0 = (ucosφ + vsinφ, −usinφ + vcosφ)

cells in the visual cortex of some mammals [8].
and (U 0 , V 0 ) is a similar rotation of the cen- Paradoxically, the exibility for determin-
ter frequency (U, V ). Thus, G(u, v) can be ing the aforementioned parameters is the main

12
JCRA 2011 | Tenerife 7-9 de Septiembre

diculty when designing a lter bank. The the Gabor decomposition in codec designs for
vague and empirical nature of parameter selec- progressive image transmission. They use only
tion has motivated explicit optimization pro- one Gabor lter and they assume that the Ga-
cedures. Among them, one of the most suc- bor coecients form a banded matrix. They
cessful approaches is the one proposed in [9], estimate that a Gabor decomposition of a 512
which aims at reducing the redundancy pro- x 512 image could be achieved in 13 ms with
duced by the non-orthogonality of the Gabor 512 processing elements (PE).
lters by making the half-peak magnitude sup-
port of the lter responses in the frequency 3.2 Face tracking
spectrum touch each other.
This approach introduced in [9] has been Among the applications related to digital im-

proved to be eective for a large amount of age processing, one of the most widely studied

pattern recognition tasks. For that reason, the is detecting human faces in photos or videos.

new ideas proposed in this paper are especially In [11], a VLSI architecture for the imple-

oriented to the implementation on FPGAs of mentation of a Gabor lter is presented. This

the category of Gabor lters designed in the work is part of a framework for the design and

aforementioned work. implementation of a Dynamic Face Tracking


System. The proposed architecture is a set of
Gabor PEs (see a representative PE in Fig-
3 Review of Gabor Filters Imple-
ure 2). The described architecture helps to
mentation on FPGAs track faces in real time in a video sequence.
The system level design is carried out using
In recent years, implementations of Gabor l-
System Generator for DSP v6.3 with MAT-
ters on FPGAs oriented to computer vision
LAB/Simulink. They proposed a Gabor lter
and image processing have increased signif-
with 5 dierent scales and 8 orientations to
icantly. Several approaches have been pro-
process gray level images.
posed in the literature for Gabor lters compu-
tation and their implementation in hardware.
3.3 Fingerprint analysis
Based on the nal task to be used they can be
broadly classied, as follows: Gabor lters have been an important issue in
the implementation of ngerprint applications
• Image compression
in FPGAs. Numerous studies have described
• Face tracking dierent approaches of these techniques, as
well as enhancing ngerprint images.
• Fingerprint analysis
In [12], a comprehensive architecture for en-

• Machine vision hancing images for ngerprint analysis is pro-


posed. The system is implemented with a Mi-
• Image segmentation croblaze processor and, then, a co-processor
calculates the Gabor lter.
In the following subsections we present the
Another approach is presented in [13]. The
work done within each of these elds over the
authors show a hardware design of Gabor l-
last few years in more detail.
ters for enhancing ngerprint images. Com-
putations are performed at each pixel of the
3.1 Image compression
image by using a specic orientation and fre-
One of the rst approaches of Gabor lters quency to generate the corresponding convolu-
in embedded circuits was for image compres- tion kernel and, then, making good enhancing
sion applications [10]. In that representative eects. They have concluded that dierent re-
work, the authors propose a combined systolic sults in the extraction of image features are
architecture using Content Addressable Mem- obtained depending on the size of the image
ories (CAM) for real-time implementation of window analyzed. Compared with the earlier

13
Sesión I: Arquitectura y Diseño de SoC I

Figure 2: Gabor Processing Element

work in [12], the design in [13] provides higher and the right retinas. In the presented sys-
output rates due to the pipeline techniques. tem, the spatial ltering emulating a simple
Finally, a new implementation in Verilog cell function is executed by an analog multi-
HDL of an algorithm for ngerprint recog- chip device, and the disparity energy is com-
nition is introduced in [14]. Since the cap- puted by a digital circuit implemented using
tured images are noisy and have poor quality, a an FPGA.
small window of 3x3 is used. Morevover, they The work presented in [17] proposes the
proposed an optimization of the algorithm by hardware implementation of a simple and fast
implementing a serial multiplier-accumulator technique for depth estimation based on phase
unit (MAC). measurement. This technique avoids the prob-
lem of phase warping and is less susceptible
to camera noise and distortion than standard
3.4 Machine vision
block-matching stereo systems. To exploit

In [15], using a biologically inspired model, a the parallelism of the FPGAs, they designed

systolic pipeline architecture of processing el- a structure of ne big pipeline that can be

ements is implemented to calculate the convo- adapted with a frame capture module. They

lution based on Gabor lters. The implemen- are able to process 52 frames per second at a

tation is performed in VHDL by using 8 orien- resolution of 1280 x 960 pixels.

tations and 5 scales, but only considering the


real component of complex Gabor coecients.
3.5 Image segmentation
The output results obtained after processing
a gray scale image is close to 15 milliseconds Another common application in computer vi-
(i.e., approximately 66 frames per second). sion is image classication and image segmen-
Furthermore, in [16], an analysis for the de- tation. The work introduced in [18] shows
sign and implementation of a neuromorphic the implementation of an architecture for the
architecture of a vision system inspired for segmentation of medical images. They im-
computing binocular disparity in real-time is plement Gabor lters in an FPGA as part
presented. They dene the binocular dispar- of the Expectation-Maximization (EM) algo-
ity as the dierence between the position of the rithm. Then, complete the segmentation via
objects in an image projected both on the left Matlab software. In the aforementioned work,

14
JCRA 2011 | Tenerife 7-9 de Septiembre

the authors apply several steps to improve the traction of features of the image are obtained
quality of the input image and, thus, obtain depending on the size of the analyzed image
better results in the nal segmentation. They window. Puig and Garcia [19] showed that
conclude that the signal-noise ratio can be im- dierent evaluation window sizes are bene-
proved by using Gabor lters and the EM algo- cial when dealing with dierent texture meth-
rithm. Therefore, the EM algorithm segments ods and classication tasks. The main prob-
images more eciently by using the texture lem regarding the denition of a proper evalua-
features of the image. tion window size is that complementary tasks,
such as texture classication and texture seg-
mentation, have contradictory requirements to
4 Improvements on Gabor Filter
perform well.
implementation
4.2 Our research focus
The previous Gabor lter implementations
were made for specic applications. The re- Our goal is to design a Gabor lter unit to be
sources consumed as well as the response times used as a co-processor in a texture classica-
also play a crucial role in those applications. tion system.
That is why optimization mechanisms are very The Gabor lter bank will be set accord-
important. ing to [9] with 4 scales and 6 orientations,
In the following subsections we discuss and a range of frequencies between 0.05 and
the limitations of previous applications and 0.4. After ltering an input image, the tex-
present our research line. ture features that will characterize every pixel
and its surrounding neighborhood (evaluation
window) are the mean and the standard de-
4.1 Limitations of previous Gabor imple-
viation of the module of the resulting coef-
mentations
cients. Therefore, every feature vector will
In some of these implementations the perfor- have a total of 6 (scales) ×4 (orientations) ×2
mance can be increased, either because they (mean and standard deviation) = 48 dimen-
have not been optimized enough or because sions. In order to take advantage of the output
they make an inecient use of resources. For produced by the lter bank, the texture fea-
instance, completely parallelizable implemen- tures mentioned above must be computed for
tations, such as [10], despite having good re- W dierent evaluation window sizes as sug-
sponse times consume large amounts of hard- gested in [19, 20] (e.g., W is set to 5 sizes:
ware resources. This makes their use in em- 3 × 3, 5 × 5, 9 × 9, 17 × 17 and 33 × 33), which
bedded complex systems more dicult. improves the accuracy of the texture classier.
Another important factor to consider is The design of the architecture is shown in
that, when designing FPGAs for specic ap- Figure 3. The proposed architecture analyzes
plications, in certain cases, the design is made the input image window in a serial way, but
for a high level of abstraction and not fully ex- every pixel belonging to the current window w
ploit the capabilities of FPGAs. In addition, will be processed in a set of parallel PEs that
the type of data is an important factor to con- correspond to the number of Gabor lters.
sider, as seen in [14], where the use of IEEE - When all the pixels in the w are processed
754 for the Gabor coecients consume a large by the PEs, the resulting components G (real
amount of memory and operations are com- and imaginary) are used to compute the norm.
plex. Then, an easy way to solve this problem The computation of the vector norm is carried
is to use xed-point data types. out with the CORDIC [21] algorithm. Once
The window size is another important factor all the windows of the input image are cal-
to consider in pixel-based image classication culated, we compute the mean and standard
and image segmentation tasks. In [13] the au- deviation. This operation is performed over
thors mention that dierent results in the ex- the same window size, but taking the results

15
Sesión I: Arquitectura y Diseño de SoC I

Figure 3: Gabor lter architecture

from the previous step. The whole procedure 6 Acknowledgements


is repeated for the W window sizes being ana-
lyzed, and the nal output is a feature vector. This work has been partially supported
by Universidad Fraternidad de Agrupaciones
Santo Tomás de Aquino (FASTA).
5 Conclusions

Two-dimensional Gabor lters are a class of References


optimal oriented bandpass lters which have
been traditionally used in a wide variety of [1] D. Gabor, Theory of communication.
computer vision and pattern recognition tasks. part 1: The analysis of information,
The operation performed by a Gabor lter is Electrical Engineers - Part III: Radio and
computationally expensive. This reason has Communication Engineering, Journal of
motivated the signicative increase of the im- the Institution of, vol. 93, no. 26, pp. 429
plementations of Gabor lters in FPGAs dur- 441, 1946.
ing the recent years.

This paper has given an overview of the [2] S.-J. Huang and S.-S. Wu, Vision-
FPGA implementation of the most outstand- based robotic motion control for non-
ing Gabor lters. We also analyzed the lim- autonomous environment, J. Intell.
itations of current implementations and de- Robotics Syst., vol. 54, pp. 733754, 2009.
scribed a line of improvement in the implemen-
tation of a new architecture of Gabor lters [3] R. Schneiderman, Trends in video
on FPGAs that has been successfully used in surveillance give dsp an apps boost [spe-
the eld of texture classication and segmen- cial reports], Signal Processing Mag.,
tation. IEEE, vol. 27, no. 6, pp. 612, 2010.

16
JCRA 2011 | Tenerife 7-9 de Septiembre

[4] J. Diaz Alonso, et al., Lane-change deci- and Integrated Circuit Technology (IC-
sion aid system based on motion-driven SICT), 2010 10th IEEE Int. Conf. on,
Vehicular Technology,
vehicle tracking, 2010, pp. 584586.
IEEE Trans. on, vol. 57, no. 5, pp. 2736
2746, 2008. [14] M. Idros, et al., Improvisation of ga-
bor lter design using verilog hdl, in
[5] A. Bovik, M. Clark, and W. Geisler,
Multichannel texture analysis using lo-
ICEDSA, 2010 Int. Conf. on, 2010, pp.

calized spatial lters, PAMI, IEEE 183186.

Trans. on, vol. 12, no. 1, pp. 5573, 1990. [15] C. Torres-Huitzil, B. Girau, and
M. Arias-Estrada, Biologically-inspired
[6] D. A. Clausi and M. E. Jernigan, Design-
digital architecture for a cortical model
ing gabor lters for optimal texture sep-
arability, Pattern Recognition, vol. 33,
of orientation selectivity, in ICANN, ser.
LNCS, 2008.
no. 11, pp. 18351849, 2000.

[7] S. Grigorescu, N. Petkov, and [16] K. Shimonomura, T. Kushima, and


P. Kruizinga, Comparison of tex- T. Yagi, Neuromorphic binocular vision
ture features based on gabor lters, system for real-time disparity estima-
Image Processing, IEEE Trans. on, Robotics and Automation, 2007
tion, in
vol. 11, no. 10, pp. 11601167, 2002. IEEE Int. Conf. on, 2007, pp. 48674872.
[8] J. G. Daugman, Two-dimensional spec-
tral analysis of cortical receptive eld pro-
[17] J. Diaz, et al., Real-time system for

les, Vision Research, vol. 20, no. 10, pp. high-image resolution disparity estima-
tion, Image Processing, IEEE Trans. on,
847856, 1980.
vol. 16, no. 1, pp. 280285, 2007.

[9] B. Manjunath and W. Ma, Texture fea-


tures for browsing and retrieval of image [18] S. Malarkhodi, R. Banu, and

data, PAMI, IEEE Trans. on, vol. 18, M. Malarvizhi,  VLSI implementa-

no. 8, pp. 837842, 1996. tion of uterus image segmentation using


multi-feature em algorithm based on
[10] G. Iyengar and S. Panchanathan, Sys- gabor lter, in ICCCNT, 2010 Int.
tolic array architecture for gabor decom- Conf. on, 2010, pp. 16.
Circuits and Systems for Video
position,
Technology, IEEE Trans. on, vol. 5, no. 4, [19] M. A. García and D. Puig, Supervised
pp. 355359, 1995. texture classication by integration of
multiple texture methods and evaluation
[11] E. Painkras and C. Charoensak, Face-
processor: A framework for hardware de-
windows, Image and Vision Computing,
vol. 25, no. 7, pp. 10911106, 2007.
sign and implementation of a dynamic
face tracking system, in Information,
Communications and Signal Processing, [20] J. Melendez, M. Garcia, and D. Puig,

2005 Fifth Int. Conf. on, 2005, pp. 172 Ecient distance-based per-pixel texture
classication with gabor wavelet lters,
176.
Pattern Analysis & Applications, vol. 11,
[12] M. Lopez, E. Canto, and M. Fons, pp. 365372, 2008.

Hardware-software co-design of a nger-


print image enhancement algorithm, in [21] E. Deprettere, P. Dewilde, and R. Udo,

IEEE IECON 2006 - 32nd Annual Conf. Pipelined cordic architectures for fast

on, 2006, pp. 34963501. vlsi ltering and array processing, in

[13] J. bao Liu, et al., Congurable pipelined IEEE Int. Conf. on ICASSP '84., vol. 9,
gabor lter implementation for nger- 1984, pp. 250253.

print image enhancement, in Solid-State

17
JCRA 2011 | Tenerife 7-9 de Septiembre

Motion Estimation Core for Resource-Limited Systems

Joaquín Olivares
olivares@[Link]

University of Córdoba

Abstract block sizes, accommodating dierent changes


in object movement within a video frame.
This work presents a new VBSME archi- In this paper, a low cost architecture for ME
tecture for Resource-Limited Systems based is presented, and pipeline timing is explained.
on bit-serial computation, also describing the Furthermore, an analysis for all smartphones
pipeline. This system supports full and re- screen resolutions is presented, and real-time
duced pixel precision. Throughput for most motion estimation is achieved for all them.
smartphone screens is estimated. Real-time This paper is organized as follows. In Sec-
processing on all devices analyzed is achieved, tion 2, the Block Matching Algorithm (BMA)
including latest devices as Nexus S, Galaxy, method, the benets of reduced precision
or iPad. This architecture can recongure the pixel, and the arithmetic representation are
pixel precision in real-time, reducing the pro- discussed. Section 3 describes the dierent
cessing, increasing the throughput, and ex- components designed for the selected arith-
tending the battery life. FPGA implementa- metic, and the proposed architecture. The
tion results are included. analysis of the segmentation is included in Sec-
tion 4, where the pipeline timing is shown.
1 Introduction The performance analysis is presented in Sec-
tion 5. Finally, hardware results, and main
Video compression is a critical task in cur- conclusions are presented in Section 6.
rent real-time video technologies, especially in
resource-limited systems as smartphones.
2 Foundations
Motion Estimation (ME) is dened as the
search for the best Motion Vector (MV) in 2.1 Block Matching Algorithm
a limited area of the previous frame, called
search area. The MV represents the coordi- Various algorithms are dedicated for the Block
nates of the displacement of the most similar Matching method [2]. TheFull Search Block
block into the search area compared to the ref- Matching Algorithm (FSBMA) is one of them,
erence block in the current frame. which matchs all sub-blocks within the search
ME removes temporal redundancy within area. Consequently, FSBMA always calculates
frames and, thus, provides coding systems the best match state and determines the opti-
with a high compression ratio. Since an mum MV. Other proposed algorithms search
ME module is usually the most computation- among fewer candidate blocks, but they suf-
ally intensive part in a typical video encoder fer from irregular data ow that is an impor-
(about 50% - 90% of the entire system) [1]. tant characteristic in the hardware implemen-
Variable Block Size Motion Estimation tation because it causes bubble cycles and la-
(VBSME) is a technique observed in the tency [3], and this is not desirable for video
MPEG-4 AVC (Advanced Video Cod- processors. Besides, they do not ensure the
ing)/H.264. It consists of segmenting the optimum result. Consequently, the FSBMA is
16 × 16 macroblock into a group of 41 variable usually used in the hardware implementation

19
Sesión I: Arquitectura y Diseño de SoC I

of ME, because of its simplicity, regularity, and 2.3 Signed Digit Representation
optimum result [4].
The most commonly used metric to deter-
Signed-Digit (SD) representation [8] is used in

mine the best match for FSBMA is the Sum this paper. This codication allows bit-serial

of Absolute Dierences (SAD). Thus, the ar-


computation, which is a fundamental require-
ment to build the recongurable RBSAD ar-
chitecture computes the minimum SAD from
chitecture. In Radix-2 SD representation, the
among all candidate blocks. To do this, a
search iteration is performed for each candi-
digit set is {−1, 0, 1}. Two bits are required
to represent each digit. The rst bit is neg-
date block.
atively weighted and the second one is pos-
The SAD adds up the absolute dierences
itively weighted. This numerical representa-
between corresponding elements in the candi-
tion simplies the subtraction operation and
date and reference block
eliminates the long carry propagation chains
N N in the addition operation, although it requires
X X
SAD = |ci,j − ri,j |, (1) to carry the two previous digits.

i=1 j=1 Bit-serial computation allows to perform


computations overlapped with the digit-by-
where ri,j are the elements of the reference digit communications of operands/results; this
block, and ci,j the elements of the candidate On-Line
computation technique is also called
block. Arithmetic (OLA). OLA algorithms operate in
a digit-serial manner, beginning with the most
signicant digit (MSD).
2.2 Reduced Precision Pixel
In short, the advantages of using OLA and

Reduced-bit SAD (RBSAD) is a technique that Radix-2 SD in the presented architecture are:

consists of the reduction of part of the pixel


representation. By truncating some bits,the - Computational: Due to digit serial na-
computation time is drastically reduced, but ture, it reduces the number of signal lines
on the other hand, by doing so, the PSNR is connecting modules, the MSD rst com-
penalized. The application of RBSAD tech- putation allows subsequent calculations
niques in videos whose pixels are represented to occur at a much earlier stage, and it
by 8 bits is justied due to the fact that the eliminates carry propagation chains since
reduction of the precision causes a very slight it uses a redundant number representa-
loss of quality: between 0.2 and 1% for a re- tion system.
duction of 2 bits, and between 1% and 2% for
4 bits [5]. - Conversion: No conversion stages. To
The number of truncated bits (NTB) is used convert from traditional representation to
to represent the pixel precision. Other recent SD no computation is necessary, the mul-
works related with RBSAD are [6] [7]. tiplexation of bits process the absolute

Typical RBSAD implementations are not dierence and the conversion on the y.

recongurable because they work with tradi- Finally the system does not require to

tional arithmetic, being based on the use of convert the SAD from SD to traditional

just the most signicative bits of the pixel, representation, because the value of the

and the reduction from an 8-bit to a 4-bit rep- SAD is not important, the ME target is

resentation does not improves the throughput the best MV.

or reduce the hardware cost.


In this work a bit-serial computation is pro- - Recongurable precision: The application

posed, with which the architecture can be re- of SD in the proposed architecture allows

congured in real-time to improve the perfor- to choose the pixel precision in real-time,

mance using RBSAD. saving computation.

20
JCRA 2011 | Tenerife 7-9 de Septiembre

3 System Architecture New Data

SAD can be computed into three steps, using


bit-serial computation, in a similar way to the ci 00
11

one used for traditional arithmetic represen- c=r ?

tation, but specic modules must be designed


ri 01 10

for this special arithmetic:


c<r c>r

- Computing the dierences between corre- ci


sponding elements: di,j = ci,j − ri,j ri
- Determining the absolute value of each AD +
dierence: |di,j | ri
P AD -
- Adding all absolute values: |di,j | ci
Once a SAD is calculated, a comparison
with the best previous SAD is required in or-
der to verify if the new obtained SAD is better. Figure 1: Design of the AD module.

Also, a specic comparison module is needed


using OLA.
MSD-rst mode and go directly to the output

3.1 Absolute Dierences when they are zero (00 or 11). If the rst non-
zero digit received is positive (01), this and all
A signed-digit number can be interpreted as the remaining digits correspond directly with
the dierence between two unsigned numbers, the output. Nevertheless, if the rst non-zero
one composed of positively weighted bits for digit received is negative (10), the bits of this
each digit, minus the one composed of nega- and all the remaining digits are exchanged to
tively weighted bits. obtain the output.
This property is used to simultaneously con-
vert each pixel value into an SD representation
3.2 The Adder Tree
and to compute the dierence between the pix-
els of the reference block and the ones of the The adder shall sum two numbers in SD rep-
current block. In this way, each digit of the resentation, each of them consisting of one SD
value di,j = ci,j − ri,j is obtained in SD rep- digit, and consisting each digit of two bits.
resentation by only taking the corresponding Due to this, the on-line arithmetic basic adder
bit of ci,j as the positively weighted one and implements the adding in two stages [9]. Fur-
the corresponding bit of ri,j as the negatively thermore, it is necessary to take into account
weighted one, since ci,j and ri,j are unsigned that each SD digit has a negative weight and
numbers. a positive one. The architecture of the OLA
To compute the absolute value of di,j (AD), adder is shown in Fig. 2. Two types of OLA
the sign of this value has to be changed if di,j adders will be used, with or without nal ip-
is negative. In SD representation, the negation ops.
operation is performed by exchanging both From it, an adder tree which is able to
bits of each digit, the AD is the Process El- sum 16 absolute dierences is developed. This
ement (PE) of this architecture, and is shown adder tree is called 16-OLA Adder tree and
in Fig. 1. will be used afterwards, see Fig. 3.
Since the MSD-rst mode of computation When the processing on the SAD over VB-
is being used, the sign detection of di,j is per- SME is carried out, it is common in other ar-
formed on-the-y by checking whether the rst chitectures to need more than one round, as
non-zero digit of di,j is positive (01) or nega- the block is not fully processed in each itera-
tive (10). The digits of di,j are received in tion [10][11]. This architecture works with a

21
Sesión I: Arquitectura y Diseño de SoC I

A+ A- B+ B- A+ A- B+ B-
16 16 16 16

FA FA

4x4-A 4x4-B 4x4-C 4x4-D

D D D D
R R R R

8x4-A 8x4-B 4x8-A 4x8-B

FA FA

8x8
D D
R R

D D
Representation: Legend:
Z- Z+
R R
VBSME-N8 16-OLA adder tree
64 16
Z- Z+

SAD comparison
Representation

Figure 4: Adder tree: VBSME-N8.

Figure 2: OLA adders.

64 64 64 64

8x8-A 8x8-B 8x8-C 8x8-D

16 x 8 - A 16 x 8 - B 8 x 16 - A 8 x 16 - B

16 x 16
Representation
16
Representation: Legend:

VBSME-N16 VBSME-N8
VBSME-N16 64

Figure 3: Adder tree: 16-OLA adder tree.

very ne grain, in such a way that a parallel


2 Figure 5: Adder tree: VBSME-N16.
processing of N pixels of the block may be
carried out, being N = 16. As it is possible to
process the whole block in parallel in just one
iteration, it is very simple to calculate the vec- the global adder used in this architecture is

tors of all possible sub-blocks in parallel. For built. This adder is shown in Fig. 5 and is

this purpose, a rst adder called VBSME-N8, called VBSME-N16. It is built by adding two

which is characterized by processing the SAD adders on a common adder tree, just as has

for a sub-block of 8×8 and for all its smaller happened with VBSME-N8, so as to obtain

size sub-blocks, has been designed, and 4 16- the SAD of the 8 × 16 sub-blocks. Each pro-

OLA adder tree adder trees are used in it. The cessed SAD needs to be compared. The design

VBSME-N8 adder is presented in Fig. 4. It of the comparator is shown in the following

is similar to a common adder tree for of 8 × 8, subsection.

adding two more adders in order to obtain the The global hardware increment respect to
SAD of the 4×8 sub-blocks. a conventional 16 × 16 adder tree is only ten
Using the adder VBSME-N8 as the base, SD OLA adders. Also, 41 registers are used to

22
JCRA 2011 | Tenerife 7-9 de Septiembre

C 0,0 R 0,0 C 0,1 R 0,1 C N,N R N,N

AD AD AD
2 2 2

VBSME-N16

SAD

Figure 6: OLA comparator Figure 7: Global architecture of the full system:


VBSME core

store the SAD for all possible sub-blocks. Task


Clock S(4x8) S(8x16)
AD S(4x4) S(8x8) S(16x16 ) Comp
3.3 The SD Comparator cycle S(8x4) S(16x8)
1 d7
2 d6
Dierently to what happens in a comparator 3 d5
based on traditional arithmetic, where, as soon 4 d4 d11
5 d3 d10 C4x4
as two dierent digits working in MSD mode 6 d2 d9 d12
are found, the highest number of those to be 7 d1 d8 d11 C4x8 - 8x4
8 d0 d7 d10 d13
compared is established, when comparing SD 9 0 d6 d9 d12 C8x8
digits, it must be kept in mind that they can 10 0 d5 d8 d11 d14
11 0 d4 d7 d10 d13 C8x16 - 16x8
have a negative weight. This can mean that
12 0 d3 d6 d9 d12 d15
it is not possible to establish such dimension 13 0 d2 d5 d8 d11 d14 C16x16
relationship when comparing two numbers and 14 0 d1 d4 d7 d10 d13 d14
15 0 d0 d3 d6 d9 d12 d13
evaluating the rst pair of dierent digits. 16 0 0 d2 d5 d8 d11 d12
The architecture of the comparator is ob- 17 d7 0 d1 d4 d7 d10 d11
18 d6 0 d0 d3 d6 d9 d10
tained from the nite state machine shown in
19 ... 0 0 d2 d5 d8 d9
Fig. 6. Transitions represent the dierence be- 20 d11 0 d1 d4 d7 d8

tween the calculated SAD and the best at the 21 d10 0 d0 d3 d6 d7

moment
22 ... d12 0 d2 d5 d6
SAD; since SD digits are in [−1, 1], 23 d11 0 d1 d4 d5
this operation can be in [−2, 2]. 24 ... d13 d0 d3 d4
25 d12 0 d2 d3
26 ... d14 d1 d2
3.4 RBSAD Architecture for VBSME 27 d13 d0 d1
28 ... d15 d0
29 d14 d15
Once the components have been presented, the
architecture is formed from those components,
beginning on a rst level for the processing of Figure 8: Timing: Full precision
all absolute dierences of a block, that is to
2
say, N = 256 absolute dierences elements.
On a second level, the VBSME-N16 structure segment is used for the processing of the abso-
can be found, which includes the adder tree lute dierences, being the following ones used
and which will have embedded the 41 com- for the adder tree. A last segment has to be
parators. This is presented in Fig. 7. added for the comparator.
Fig. 8 presents the timing for full precision.

4 Analysis of the Segmentation 28 clock cycles are necessary to compare all


the bits of the 16 × 16 SAD, whereas for the
The analysis takes place according to the dif- 4 bit precision case, it is reduced to 24 clock
ferent segments of the architecture. The rst cycles. However, this parameter is not very

23
Sesión I: Arquitectura y Diseño de SoC I

Table 1: Throughput in Smartphones (fps)

Smartphone Resolution NTB=0 NTB=2 NTB=4 NTB=6

Several QVGA 320×240 274.0 313.1 365.3 438.4

iPhone 3 HVGA 480×320 137.0 156.6 182.7 219.2

BlackBerry Torch 9800 HVGA+ 480×360 121.8 139.2 162.4 194.8

Nokia N8 - N97 nHD 640×360 91.3 104.4 121.8 146.1

HTC Touch Pro VGA 640×480 68.5 78.3 91.3 109.6

Nokia N900; HTC Touch HD; WVGA 800×480 54.8 62.6 73.1 87.7

Nexus One; Nexus S

Apple iPhone 4 960×640 34.3 39.1 45.7 54.8

Samsung Galaxy tab WSVGA 1024×600 34.3 39.1 45.7 54.8

Apple iPad XGA 1024×768 26.8 30.6 35.7 42.8

relevant, as the timing depends indeed on the shown in Fig. 8.


number of bits per pixel and on a series of The analysis of the pipeline is as follows:
zeros which need to be inserted in the adder 2log2 N + 1 clock cycles are required to process
tree for a correct adding, matching the num- the most signicant bit of each pixel. In a
ber of zeros with the number of levels on the full 8 bit representation, another 7 clock cycles
2
adder tree: log2 N . Fig. 8 is interpreted in the must be added for the rest of bits, which means
following way: column AD shows each digit a total of 2log2 N + 8 clock cycles for a fully
on which the AD has been processed, column completed block. To process it with reduced
S(4 × 4) is shown when every digit correspond- precision, it is necessary to subtract from such
ing to the SAD for a 4×4 block is obtained. formula the NTB, being then the nal formula
The following columns need to be interpreted as follows:
in the same way, each of them specifying the
clock cycle when the result for the SAD of the
corresponding sub-block is obtained. The last 2log2 N +8−N T B clock cycles per block (2)

column, Comp, shows in which clock cycle is


obtained the result of the comparison with the 5 Performance Analysis on
best SAD for each of the sub-blocks.
Resource-Limited Systems
log2 N 2 segments are used in the adder
tree, represented on columns S(i), and a - In Table 1, the throughput for most smart-
nal segment is needed for the last comparator. phone resolutions is presented. In the rst col-
Sub-block comparisons are shown on column umn, some of the most representative smart-
Comp. The rst digit of all 4×4 SAD sub- phones are shown for each screen resolution.
blocks can be compared starting after clock In the second column, the screen resolution
cycle 4; all 4×8 and 8×4 SAD sub-blocks and its common name are shown, please note
comparisons start after clock cycle 6; 8 × 8 that nHD is used only by Nokia, and it is
sub-blocks comparisons start after 8; 16 × 8 not a standard. Results for iPhone 4 and
and 8 × 16 start after 10; and, the nal 16 × 16 Galaxy are the same, in despite of the dierent
comparison starts after 12. All comparisons screen, both resolutions have the same number
are nished at clock cycle 28, but a new mac- of macroblocks per frame, 2400. Data shown
roblock starts its processing at clock cycle 17 on the table represent the number of frames
for N = 16 thanks to the pipeline, which is per second (fps) for each screen resolution in

24
JCRA 2011 | Tenerife 7-9 de Septiembre

Table 2: Frequency (MHz) to Obtain Real-Time Processing at 30 fps

Smartphone Aspect ratio NTB=0 NTB=2 NTB=4 NTB=6

Several 4:3 41.6 36.4 31.2 26.0

iPhone 3 3:2 83.2 72.8 62.4 52.0

BlackBerry Torch 9800 4:3 93.6 81.9 70.2 58.5

Nokia N8 - N97 16:9 124.8 109.2 93.6 78.0

HTC Touch Pro 4:3 166.5 145.7 124.8 104.0

Nokia N900; HTC Touch HD; 5:3 208.1 182.1 156.1 130.1

Nexus One; Nexus S

iPhone 4 3:2 332.9 291.3 249.7 208.1

Samsung Galaxy tab  332.9 291.3 249.7 208.1

iPad 4:3 426.1 372.9 319.6 266.3

function of the NTB. tion for H.264/MPEG-4 AVC standard is pre-


Real-time is achieved for all them using any sented. Design of all components is provided;
pixel precision excepting iPad. Real-time for arithmetic and computational features are de-
iPad is achieved with NTB=4. Increasing scribed. The architecture has been imple-
the input bitwidth to 4 input ports of 8-bits, mented in VHDL, has been compiled using ISE
the latency will be 64 clock cycles, and the 9.2, and has been implemented on a Virtex-
throughput for iPad with NTB=2 will be 30.1 5 series XC5VLX50. The results are: 2345
fps, also reaching real-time. LUTs for architecture core; the global sys-
Energy consumption is critical on resource- tem, including architecture and data struc-
limited systems, depending the frequency tures is 3848 LUTs. This system operates
needed for real-time processing (normalized to at 380.1M Hz . The on-chip memory is 3.27
30 fps), presented in Table 2, on the screen KBytes[12].
resolution. Most resolutions have a 4:3 aspect The signed digit representation does not re-
ratio; except for iPhone devices that have 3:2; quire processing time for the conversion, or
Galaxy tab has not a standard aspect ratio; any extra memory cost: the conversion from
5:3 aspect ratio was not usual, but recently it two's complement representation to signed
has been adopted by several manufacturers, as digit is carried out at the same time as the
Nokia N900, HTC, and Nexus; nally, Nokia absolute dierence processing, simplifying the
nHD has a 16:9 aspect ratio. In this table, computation; there is not a conversion from
both the iPhone 4 and the Galaxy results are signed digit to two's complement due to the
equal, because they depend on the number of fact that the SAD value is only used to calcu-
macroblocks per frame. late the motion vector; the on-chip memory is
With this table, a manufacturer can esti- the same that will be needed for processing in
mate the idoneous NTB for real-time process- two's complement representation.
ing if it has restrictions regarding frequency or The presented motion estimation architec-
energy consumption. ture is designed for bit-serial computation, and
does not depend on the pixel width, which fa-

6 Conclusions cilitates an easy reconguration of the device


in real-time, and allows to save computing, in
A new recongurable architecture to pro- fact 25% can be saved for NTB=4.
cess the variable block size motion estima- Furthermore, NTB can be recongured

25
Sesión I: Arquitectura y Diseño de SoC I

while the smartphone is operating to save pro- [4] M. Sayed, W. Badawy, G. Jullien, To-
cessing, extending battery life. Most smart- wards an H.264/AVC HW/SW Integrated
phone and tabs screen resolutions are studied, Solution: An Ecient VBSME Archi-
and the throughput in function of the NTB for tecture, IEEE Trans. on Circuits and
a Virtex-5 FPGA is presented. Moreover, the Systems-II: Express Briefs, vol. 55, no. 9,
frequency to operate in real-time is calculated, pp. 912916, Sept. 2008.
using hardware cost results and the frequency
[5] S. Agha, V.M. Dwyer, V. Chouliaras, Mo-
estimation for real-time, a designer can choose
tion estimation with low resolution distor-
the technology idoneous where implement the
tion metric, Electronics Letters, vol. 41,
presented processor. The recongurable pixel
no. 12, pp. 693694, June 2005.
precision and the frequency required to oper-
ate at 30 fps facilitates the integration of this [6] V. M. Dwyer, S. Agha, V. A. Chouliaras,
architecture in future devices. Reduced-Bit, Full Search Block-Matching
Reducing power consumption and increas- Algorithms and their Hardware Realiza-
ing the throughput, are interesting benets, tions, Lecture Notes in Computer Science,
because of this, in future works the proposed vol. 3708, pp.372380, 2005.
architecture will be implemented on Spartan6.
The low cost, and, the high throughput [7] M. R. H. Fatemi, H. F. Ates, R.

makes this architecture suitable for resource- Salleh, A Cost-Ecient Bit-Serial Archi-

limited systems. tecture for Sub-Pixel Motion Estimation of

This architecture is patented by the Univer- H.264/AVC, Int. Conf. on Intelligent In-

sity of Córdoba, Spain. Ref: P201031628. formation Hiding and Multimedia Signal
Processing, pp. 818821, 2008.

Acknowledgment [8] A. Avizienis, Signed Digit Number Rep-


resentation for Fast Parallel Arithmetic,
The author wishes to remark the great task IRE Trans. on Electronic Computers, Vol.
carried out by the Xilinx University Program, EC-10, pp. 389-400, Sept. 1961.
XUP, which have donated software and mate-
rials which have been very useful to partially [9] M.D. Ercegovac, T. Lang,Digital Arith-

nance this work. metic, Morgan Kaufmann, 2003.

[10] C.-Y. Chen, S.-Y. Chien, Y.-W. Huang,


References T.-C. Chen, T.-C. Wang, L.-G. Chen,
Analysis and Architecture Design of Vari-
[1] Y. Huang, S. Chien, B. Hsieh, L. Chen, able Block-Size Motion Estimation for
Global elimination algorithm and archi- H.264/AVC, IEEE Trans. on Circuits and
tecture design for fast block matching mo- Systems-I: Regular Papers, vol. 53, no. 2,
tion estimation, IEEE Trans. on Circuits pp. 578593, March 2006.
and Systems for Video Technology, vol. 14,
no. 6, June 2004. [11] C. Wei, H. Hui, T. Jiarong, L. Jinmei, M.
Hao, A High-performance Recongurable
[2] V. Bhaskaran, K. Konstantinides, Im- VLSI Architecture for VBSME in H.264,
age and Video Compression Standards: IEEE Trans. on Consumer Electronics, vol.
Algorithms and Architectures, 2nd edn. 54, no. 3, pp. 13381345, Aug. 2008.
Kluwer Academic Publishers, 1997.
[12] J. Olivares, A Low Cost Architecture for
[3] M. Ghanbari, Standard Codecs: Image Variable Block Size Motion Estimation,
Compression to Advanced Video Coding, Journal of Signal Processing Systems, in
IET Telecommunications Series, 2003. Press. 2011.

26
JCRA 2011 | Tenerife 7-9 de Septiembre

Filtro IIR Confiable para Aplicaciones de Control de un Volante


de Levitación Magnética

Patricia López (1), Jon Mabe(1), David Cantero(1), Armando Astarloa(2) , Iñigo Oyarbide(2)
plopezalonso@[Link], jmabe@[Link], dcantero@[Link], [Link]@[Link],
oiharbide@[Link]
(1)
Fundación Tekniker-IK4.
(2)
Universidad del País Vasco / Euskal Herriko Unibertsitatea.

Resumen Uno de los estándares más utilizados en el


diseño de sistemas embebidos para sistemas
Este artículo presenta una serie de técnicas para críticos de seguridad es la norma IEC61508 [3]
realizar el diseño de un módulo de procesamiento titulada Seguridad Funcional de Sistemas
digital de señal en una FPGA de manera Eléctricos/Electrónicos/Electrónico Programables
confiable. El objetivo es reducir la tasa de fallos Relacionados con la Seguridad. Esta norma fue
del módulo de procesamiento que forma parte del desarrollada por la Comisión Electrotécnica
sistema de control de un volante de levitación Internacional en 1998 con una segunda edición en
magnética. La consecución del diseño bajo los 2010, cuya principal diferencia con la versión
condicionantes de seguridad va a seguir las pautas anterior es la incorporación de un apartado
marcadas por el estándar de seguridad funcional específico para el desarrollo de sistemas
IEC 61508, así como el uso de técnicas de diseño relacionados con la seguridad mediante ASICs
robusto en FPGAs, como redundancia y (FPGAs, CPLDs, PLDs) [4].
scrubbing. Finalmente, se comprobará de manera Esta norma tiene en cuenta los momentos en
experimental la reducción de la tasa de fallos al que pueden introducirse fallos al diseñar un
aplicar las técnicas descritas. sistema de estas características y presenta técnicas
y medidas para controlarlos. Mediante la
caracterización de estos posibles fallos y la
1. Introducción aplicación de técnicas de tolerancia y mitigación,
se dota al diseño de la robustez necesaria para
hacer frente a los fallos que puedan producirse. La
Un sistema crítico de seguridad se define como un
eficacia de las técnicas empleadas dependerá del
sistema en el que la presencia de un fallo puede
nivel de seguridad (SIL - Safety Integrity Level)
provocar la muerte o daños a personas, daños al
que desee alcanzarse.
entorno o al propio equipo, o pérdidas económicas
En este artículo se considera como sistema
importantes. Entre estos sistemas se encuentran,
crítico de seguridad un sistema flywheel, que será
por ejemplo, los equipos médicos y los sistemas
explicado en detalle en el siguiente apartado. En
incorporados en vehículos, aviones o equipos
las siguientes secciones se presentan alternativas
industriales.
para mejorar la seguridad del sistema del control
Generalmente este tipo de sistemas necesitan
formado por un sistema híbrido DSP + FPGA. El
ser certificados frente a algún estándar de
documento se centra en proponer un diseño
seguridad para garantizar unos ciertos niveles de
confiable para el módulo de procesamiento de
seguridad [1, 2]. Lo que se persigue es mantener
señal implementado en la FPGA. En el último
la tasa de fallos del sistema entre unos niveles
apartado se calcula de manera experimental la tasa
determinados fijados por cada estándar. Estas
de fallos para cada una de las alternativas de
normas se utilizan como guías de diseño para
diseño propuestas y se realiza una comparativa de
evitar o mitigar fallos peligrosos y tienen en
los resultados obtenidos.
cuenta tanto las etapas de diseño, como la puesta
en marcha y el desmantelamiento de los equipos.

27
Sesión I: Arquitectura y Diseño de SoC I

2. Descripción del flywheel La FPGA se encarga de gestionar en paralelo


todos los canales de entrada y salida del sistema y
Un flywheel es un sistema formado por un volante el preprocesamiento de las señales y los datos,
que gira a muy alta velocidad y que almacena la minimizando así el tiempo de procesado en el
energía cinética generada por dicho volante para DSP. Por otro lado, en el DSP se ejecutan los
convertirla en energía eléctrica cuando sea algoritmos de estimación para aprovechar su
necesario. Este sistema es catalogado como un capacidad de procesamiento en coma flotante.
sistema crítico de seguridad ya que la pérdida del El módulo de preprocesamiento implementado
control del volante junto con unas medidas de en la FPGA se encarga, entre otros, de realizar un
seguridad no adecuadas, puede tener filtrado antialiasing de las señales de posición
consecuencias catastróficas teniendo en cuenta recogidas por los sensores. Se trata de un filtro
que la velocidad de giro puede ser de 20.000 rpm. configurable por el usuario que permite cambiar el
Un ejemplo del uso de este tipo de sistemas es valor de los coeficientes del filtro desde el DSP
en aplicaciones de arranque y frenado de para modificar su frecuencia de corte. El módulo
locomotoras. La pérdida de energía que provoca la de procesamiento consta de dos partes:
frenada de un tren puede minimizarse • Un módulo que realiza la conversión de los
almacenando esa energía mediante un volante de coeficientes del filtro de coma flotante a
inercia y utilizarla para acelerarlo. También son punto fijo y carga estos valores en el módulo
empleados como sistemas de alimentación de filtrado.
ininterrumpida para proporcionar energía eléctrica • Un módulo que realiza el filtrado de la señal
en caso de que haya un fallo en el suministro de de entrada.
energía principal, por ejemplo, en hospitales o
aeropuertos. Sistema
El flywheel desarrollado por Tekniker-Ik4 es Sensores Actuadores
Bajo Control
un volante de inercia de levitación magnética, que
evita el rozamiento de las piezas y permite que el
volante gire a mayor velocidad y con menores FPGA
pérdidas de rozamiento. El sistema está formado μControlador
por una serie de sensores y actuadores mediante
DSP
los que se controlará la posición de levitación y Monitorización &
giro del volante. La parte de control está Control Comunicaciones
implementada en una plataforma hibrida
DSP+FPGA (Figuras 1 y 2) debido a la necesidad Figura 2. Diagrama de bloques del sistema de control del
de ofrecer una elevada potencia de cálculo para flywheel
poder gestionar el gran número de entradas y Éste es un punto crítico del diseño ya que
salidas que presenta el sistema, la alta velocidad estas señales se emplearán posteriormente para
requerida por el lazo de control (hasta 20-40 KHz) controlar la posición del volante y decidir el modo
y los algoritmos que deben implementarse. de actuar de los actuadores. Una señal de control
Norma
incorrectamente calculada, por ejemplo, debido a
IEC 61508 un error en los coeficientes del filtro, podría
Arquitectura Confiable
provocar la pérdida del control del volante.
Arquitectura de Procesamiento
Proc. de Señal 2.1. Necesidades de seguridad del flywheel

Se ha realizado un Análisis de Modos de Fallos y


Efectos (AMFE) del flywheel para analizar los
fallos que conlleva este sistema y determinar las
medidas oportunas para mitigarlos.
Figura 1. Sistema flywheel

28
JCRA 2011 | Tenerife 7-9 de Septiembre

Especificación Especificación Validación del ASIC


requisitos de seguridad Test de ASIC
requisitos de seguridad
del sistema E/E/EP validación validado
del ASIC

Arquitectura del Arquitectura Verificación Verificación


sistema E/E/EP del ASIC del ASIC

Test de
Diseño del Integración
ASIC (módulos)

Diseño Test
módulos módulos

Síntesis y  simulación
place&route post‐layout

Codificación final

Figura 3. Modelo en V para el desarrollo de ASICs empleado en la IEC61508

Se observa que además de las necesidades de • Construcción: Fallos físicos que por
seguridad requeridas por la parte mecánica del construcción tiene el chip o que se han
flywheel, como puede ser un sistema de parada de producido al integrarlo en el sistema.
emergencia en caso de sobretemperatura o fallo de • Uso o desgaste: Fallos físicos causados por
los sensores, es necesario incluir un mecanismo de un uso continuado o de almacenamiento.
seguridad que actúe en caso de fallo en la tarjeta • Externos: Fallos físicos causados por el
de control. El mecanismo de seguridad deberá entorno en el que se está utilizando el
detener el sistema haciendo que el volante deje de sistema.
levitar de manera controlada para evitar el
descontrol del mismo. Aunque esta solución evita 3.1. Diseño e implementación
daños mayores, detener el sistema puede provocar
una serie de pérdidas económicas que deberían ser
La norma IEC 61508 (Edición 2) plantea el uso de
contempladas. Por lo tanto, reducir la probabilidad
un modelo de diseño en V. La figura 3 muestra
del fallo del módulo de procesamiento
este modelo que facilita las tareas de
implementado en la FPGA garantizaría una mayor
identificación y control de los fallos que puedan
fiabilidad del sistema.
producirse durante las etapas de diseño e
En las siguientes secciones se van a presentar
implementación. Se da gran importancia al hecho
distintos mecanismos y técnicas para minimizar y
de verificar y validar cada una de las etapas de
controlar la aparición de fallos en dicho módulo.
diseño para garantizar que se van cumpliendo
cada uno de los requisitos impuestos.
3. Seguridad en FPGAs Además, la norma sugiere el uso de una serie
de técnicas, dependiendo del nivel de seguridad
Como se ha indicado en el apartado anterior, un que se desee alcanzar, entre las que se encuentran
fallo en el módulo de la FPGA puede provocar el análisis de tiempo, simulación o el uso de
que el sistema entre en una situación de peligro. checklists. Estas técnicas se presentan en las
Por esta razón es importante determinar las partes 2 y 7 de la norma IEC61508 en su segunda
posibles fuentes de fallo en este tipo de edición.
componentes. En [5] se presenta una clasificación
de los tipos de fallos en función de su origen: 3.2. Fallos hardware
• Diseño: Mal diseño.
• Implementación: Fallos introducidos al En [1] se presenta entre las posibles causas de
generar el bitstream, al cargarlo y al arrancar fallo del hardware: la radiación, los tiempos de
la FPGA.

29
Sesión I: Arquitectura y Diseño de SoC I

subida de las señales, las máquinas de estado, la En el caso de las FPGAs de tecnología
alimentación y las conexiones de los pines. SRAM, la redundancia se aplica a un mismo
Las radiaciones de partículas energéticas son módulo funcional. La TMR consiste en triplicar el
una de las mayores fuentes de fallo externa en módulo que necesita mayor fiabilidad y mediante
FPGAs [1, 6]. Aunque durante la pasada década un votador decidir la salida correcta. De esta
sus efectos han sido únicamente considerados en manera se obtiene un sistema tolerante a fallos.
los diseños para aplicaciones espaciales y
militares, hoy en día, debido al aumento de la Scrubbing
densidad de integración, a la reducción del voltaje
de funcionamiento y a las altas frecuencias de Xilinx [13] propone la técnica de scrubbing en
trabajo, los dispositivos son cada vez más FPGAs de la serie Virtex para corregir los efectos
sensibles a la radiación y sus efectos deben ser que los SEUs pueden provocar en la memoria de
considerados incluso a nivel terrestre [6]. configuración del dispositivo. Esta técnica
Estas radiaciones provocan los denominados consiste en recargar periódicamente el bitstream
Single Event Effects (SEE), entre los que se de configuración para reparar la memoria SRAM.
distinguen [7]: En las FPGAs de última generación., como los
• Single Event Upset (SEU): Es un cambio en dispositivos Virtex-5 de Xilinx, se incluyen
el estado de un transistor modificando el bloques hardware específicos de Xilinx para
valor de un único bit. corregir los frames de configuración mediante
• Single Event Transient (SET): Se trata de un técnicas de corrección de errores (ECC – Error
pulso transitorio creado por la partícula Correcting Code). De esta forma se evita la
incidente que deriva en un almacenamiento necesidad de recargar el bitstream completo.
erróneo en memoria.
• Multiple Bit Upset (MBU): Cuando una única Reconfiguración parcial dinámica
partícula modifica más de un bit.
La reconfiguración parcial dinámica [14] se basa
Artículos como [5, 7, 8, 9, 10, 11] proponen en reprogramar una determinada área de la FPGA
técnicas para mitigar los fallos producidos por para cambiar el comportamiento de la misma sin
estos efectos. Se suelen utilizar técnicas de diseño necesidad de resetear el dispositivo completo. La
seguro como redundancia, scrubbing y FPGA seguirá funcionando normalmente hasta
reconfiguración parcial dinámica. A la hora de que esa zona sea reprogramada, que será cuando
realizar un diseño confiable con FPGAs de la FPGA adoptaría el nuevo comportamiento.
tecnología SRAM para aplicaciones críticas se En el contexto de este artículo, interesaría
suelen combinar técnicas de tolerancia a fallos reprogramar la zona de la FPGA en la que se ha
como la redundancia, con técnicas específicas detectado un fallo con el bitstream parcial
para FPGAs como el scrubbing. correcto. Además, si el circuito implementado
tiene un layout diferente al que se había cargado
Redundancia física o Hardware previamente podrían llegar a tolerarse errores
permanentes producidos en el sustrato de la
FPGA.
La técnica redundante más empleada hoy en día es
la Triple Modular Redundancy (TMR) [12], cuya
estructura se muestra en la siguiente figura. 4. Diseño confiable del modulo de
procesamiento del flywheel
Entradas
Módulo Redundante 0 Para garantizar la fiabilidad del módulo de
Salida procesamiento (Figura 5) descrito en la sección 2
Módulo Redundante 1 Votador es necesario tener en cuenta dos aspectos. Por un
Módulo Redundante 2 lado, es necesario que el filtro sea estable para
obtener valores de salida adecuados y además, que
Figura 4. Esquema de Triple Modular Redundancy el modulo sea robusto frente a los fallos definidos
en la sección 3.

30
JCRA 2011 | Tenerife 7-9 de Septiembre

Entradas load_coeff= 1 secciones de orden dos en cascada da mejores


enA1
A1 A1 resultados que si se implementa como una única
enA2
sección de orden N. En ese artículo además se
A2 A2 señala que el uso de una estructura en forma
enA3 directa II requiere menos memoria de
A3 Conversor A3
(flotante‐ FILTRO Salida almacenamiento para guardar las muestras de
‐fijo) enB1
IIR datos.
B1 B1
Teniendo en cuenta estos puntos, se ha optado
B2
ce_fl2fx enB2
B2 por un filtro IIR tipo Butterworth de cuarto orden
descompuesto en dos secciones de orden 2 en
enB3
B3 B3 forma directa II, colocadas en cascada.
Coeficientes Coeficientes
(coma flotante) (punto fijo)
Conversión coeficientes
Figura 5. Diagrama de bloques del módulo de
procesamiento Los coeficientes del filtro llegan a la FPGA
desde el DSP en formato de coma flotante. Los
4.1. Estudio de la estabilidad del filtro y valores de los coeficientes se han obtenido
posterior diseño con el System Generator realizando el diseño del filtro mediante la
herramienta FDATool de Matlab. Se ha diseñado
La estabilidad del filtro va a depender del tipo de un módulo en la FPGA que convierte los
filtro (FIR, IIR), de la estructura elegida para coeficientes a punto fijo. El módulo está formado
implementarlo y de la cuantificación de los por el IP core Floating-Point de Xilinx que
coeficientes necesaria para realizar el filtro en la convierte números en coma flotante de 32 bits a
FPGA. números de punto fijo de 18 bits, siendo 2 bits la
Un filtro IIR (Infinitive Impulse Response) representación de la parte entera. Se ha escogido
puede cumplir con los mismos requisitos que un esta cuantificación porque mediante análisis en
filtro FIR (Finite Impulse Response) con un menor Simulink se ha observado que es la que mejor
orden. Al reducir el orden, disminuye la carga relación precisión – recursos necesarios da para la
computacional y por lo tanto, los retardos de señal de salida.
señal serán menores. En el diseño de sistemas de Las conversiones se controlan mediante una
control interesa que este retardo sea mínimo. máquina de estados que almacena en registros los
La cuantificación de los coeficientes es un valores de los coeficientes en punto fijo. Una vez
punto importante en cuanto a la estabilidad del que se han convertido todos los coeficientes se
filtro. Debido a la cuantificación, los polos y los cargan en el módulo del filtro.
ceros van a desplazarse y como consecuencia, la
respuesta frecuencial puede verse alterada. Según Estructura del filtro
[15], cuanto mayor sea el número de polos/ceros y
más próximos estén, mayor será la sensibilidad a El diseño del filtro se ha realizado con la
la cuantificación de los coeficientes de nuestro herramienta System Generator de Xilinx (Figura
sistema. Por esta razón, para un mismo orden, el 6). Esta herramienta permite crear y verificar
uso de secciones de orden dos va a hacer que el diseños de hardware para FPGAs de Xilinx, y
filtro sea menos sensible a la cuantificación de los funciona en conjunto con Simulink y Matlab.
coeficientes. El número de bits necesarios para Además genera automáticamente el código HDL a
cuantificar el filtro de forma correcta se obtiene partir del modelo en Simulink, lo que reduce la
mediante simulación. También señalar que a la probabilidad de introducir errores por parte del
hora de implementar un filtro IIR en una FPGA, programador.
[16] indica que utilizando el mismo número de
multiplicadores, realizar el filtro mediante

31
Sesión I: Arquitectura y Diseño de SoC I

Figura 6. Estructura del filtro IIR y de una sección de orden 2 en System Generator

En la figura 6 se presenta el diseño del (mala conversión o que se han introducido


módulo de filtrado realizado con el System coeficientes equivocados) → Sería necesario
Generator y que está formado por dos secciones comprobar que los coeficientes están dentro
de orden 2. Una vez realizado el diseño, se de la circunferencia de radio unidad antes de
importa como un modulo al proyecto del ISE para cambiar los coeficientes.
incluirlo en el sistema del Flywheel. • Fluctuaciones indeseadas de la señal de
salida → Calcular FFT de la salida para poder
4.2. Diseño robusto frente a fallos comprobar si la salida es correcta.
El diseño e implementación de estas funciones
Para realizar un sistema tolerante a fallos se aplica y el análisis de las mejoras que supondrían,
la técnica de redundancia (TMR) (apartado 2.2). quedan fuera del alcance de este artículo.
Para ello se triplica todo el módulo de procesado,
lo que hará aumentar el número de recursos
utilizados en la FPGA pero que disminuirá 5. Diseño convencional vs. Diseño robusto
considerablemente la tasa de fallos, como se
comprobara en el siguiente apartado. El estándar IEC 61508 define el parámetro λ (1)
Por otro lado y para garantizar también la para cuantificar el nivel de integridad de seguridad
seguridad del sistema, la norma IEC 61508 del diseño.
sugiere implementar funciones de seguridad para número fallos
λ= (1)
cada uno de los posibles fallos detectados. Con horas operativas
estas funciones se pretende reducir el riesgo que La tasa de fallos puede expresarse en fallos
conlleva un fallo hasta unos niveles tolerables. por millón (10-6), o en FITs (Failure in Time), que
En el caso que estamos analizando, el peligro representa el número de fallos en 109 horas de
consiste en obtener a la salida del filtro una señal funcionamiento del dispositivo. También es
no deseada. Por lo tanto, sería necesario analizar común expresar este parámetro en función del
que situaciones provocarían este fallo y crear tiempo medio entre fallos (MTBF - Mean Time
funciones que puedan controlarlo. Las causas de Between Failures) (2).
una señal de salida errónea serían:
1⁄ (2)
• Perdida de la estabilidad del filtro porque Para facilitar el cálculo de la tasa de fallos de
los coeficientes en punto fijo son erróneos un diseño, Xilinx [17] proporciona un valor

32
JCRA 2011 | Tenerife 7-9 de Septiembre

nominal para toda la FPGA y un método de deben contener suficientes combinaciones de


cálculo teórico que tiene en cuenta el % de la errores, para garantizar obtener una tasa de fallos
FPGA ocupado por el diseño y el % de los bits de realista.
configuración que pueden afectar al mismo, La aplicación del PC va a controlar la
denominados bits críticos. simulación y muestra información sobre los SEU
En este artículo se utiliza un método generados, los errores corregidos, la tasa de fallos,
experimental para obtener la tasa de fallos. Se etc.
emula la inyección de SEUs mediante un pequeño La siguiente tabla muestra una comparativa
circuito que se implementa en la propia FPGA y de los resultados experimentales obtenidos para
que cambia los bits de la memoria de control a los dos diseños. Se han inyectado 4540 SEUs en 4
través del puerto de configuración ICAP (Internal horas para el diseño convencional y 4232 en 3,75
Configuration Access Port). La macro SEU horas para el diseño protegido.
Controller de Xilinx incluye un método de
Diseño Diseño
inserción de SEUs y hace uso de las capacidades Convencional Robusto
de la Virtex-5 para realizar el scrubbing y 1,680 0
FILTER FIT
monitorizar dicho proceso. El objetivo es saber CTRL FIT 1,310 1,200
cuántos SEUs se han producido en total y cuantos TOTAL FIT 2,990 1,200
han sido críticos para el diseño. Se va a considerar MTBF (años) 38.179 95.129
despreciable la aparición de SEUs en el área de la
Tabla 1. Comparativa de los resultados del parámetro λ
FPGA en la que está emplazado el controlador,
debido a su reducido tamaño. Analizando estos resultados se observa que,
El diseño de la plataforma utilizada para durante el tiempo de simulación, el módulo al que
probar la fiabilidad del módulo de procesamiento se le han aplicados las técnicas de redundancia y
diseñado en este artículo se presenta en la figura scrubbing presenta una tasa de fallos igual a cero.
7. Se ha utilizado la tarjeta de evaluación ML507 Los fallos obtenidos en este diseño son debidos a
de Xilinx, que lleva una FPGA de la familia los SEUs que han afectado al controlador
Virtex (XC5VFX70T). La tarjeta de control real implementado en la FPGA para realizar la
utilizada en el flywheel contiene una FPGA simulación y por lo tanto no afectarán a nuestro
Spartan 3 4000 de Xilinx, en la que no es posible sistema.
realizar este tipo de pruebas. La tabla 2 muestra el número de recursos
lógicos utilizados por el módulo de
FPGA procesamiento. Como era de esperar, los recursos
CUT (Circuit Under Test) utilizados se han visto prácticamente triplicados al
aplicar la redundancia a dicho módulo.
HWT  (Hardware Testbench) Recursos Diseño Diseño
utilizados Convencional Robusto
RS‐232 Slice Registers 1304 (2%) 3454 (7%)
Slice LUTs 1240 (2%) 3733 (8%)
PC LUT-FF pairs 356 (16%) 1088 (17%)
DSP48Es 11 (8%) 33 (25%)
Figura 7. Diagrama de bloques de la plataforma de
prueba Tabla 2. Comparativa recursos utilizados para
implementar el modulo de procesamiento
El CUT es el módulo de la FPGA que se
quiere analizar. Se van a utilizar dos versiones del
módulo de procesamiento, un diseño convencional
6. Conclusión
y otro diseño tolerante a fallos.
EL HWT es el módulo encargado de inyectar A la hora de diseñar un sistema crítico de
vectores de test en el CUT, emular el efecto de seguridad es importante garantizar que todas las
SEUs mediante la modificación del bitstream de partes de dicho sistema cumplen con los requisitos
configuración, detectar el fallo y corregir el de seguridad impuestos. Los estándares de
mismo mediante scrubbing. Los vectores de test seguridad actuales, como la norma IEC 61508,
proporcionan técnicas y medidas que van a

33
Sesión I: Arquitectura y Diseño de SoC I

permitir evitar y controlar la aparición de fallos International Conference on System Safety


durante todas las etapas del ciclo de vida de 2009.
nuestro sistema. [6] Sterpone, L. y Violante, M. Static and
Este artículo se ha centrado en el diseño de un Dynamic Analysis of SEU effects in SRAM-
modulo de procesamiento de señal implementado based FPGAs. 12th IEEE European Test
en una FPGA y que forma parte del sistema de Symposium, 2007.
control de un flywheel. Se ha comprobado de [7] Morillo, A., Astarloa, A., Zuloaga, A., Bidarte,
forma experimental cómo el uso de técnicas de U. y Arranz, J. Técnicas de diseño seguro con
redundancia y scrubbing han hecho al módulo FPGAs. Seminario Anual de Automática,
tolerante a fallos y han disminuido Electrónica Industrial e Instrumentación,
considerablemente la tasa de fallos del sistema. SAAEI 2010.
Este aumento de la seguridad en el circuito [8] Bernardi, P., Sonza Reorda, M., Sterpone, L. y
implementado junto con el empleo de técnicas de Violante, M. On the evaluation of SEU
simulación y verificación sugeridas en la sensitiveness in SRAM_based FPGAs.
IEC61508, va a hacer que nuestro sistema tenga Procedings of the 10th IEEE International On-
una alta fiabilidad. Sin embargo, hay que tener en Line Testing Symposium, 2004.
cuenta que la aplicación de estas normas va a [9] Lima Kastensmidt, F., Sterpone, L., Carro, L.
aumentar el coste y el tiempo empleado en la y Sonza Reorda, M. On the Optimal Design of
realización del diseño respecto a un diseño Triple Modular Redundancy Logic for
convencional. Además, tal y como se ha podido SRAM-based FPGAs. Proceedings of the
comprobar en los resultados de implementación, conference on Design, Automation and Test in
las técnicas de redundancia propuestas para la Europe. IEEE Computer Society, 2005.
PFGA conllevan un aumento del número de [10] Morgan, K.S., McMurtrey, D.L., Pratt, B.H.
recursos utilizados. y Wirthlin, M.J. A Comparison of TMR with
Entre los trabajos futuros relativos a esta Alternative Fault-Tolerant Design Techniques
investigación destaca, la posibilidad de rediseñar for FPGAs. IEEE transactions on nuclear
la tarjeta de control del flywheel, sustituyendo la science, vol. 54, 2007.
FPGA actual por una de la familia Virtex de [11] Pratt, B., Caffrey, M., Graham, P., Morgan,
Xilinx, y poder aplicar las técnicas presentadas en K. y Wirthlin, M. Improving FPGA Design
este artículo para conseguir un sistema más Robustness with Partial TMR. 44th Annual,
confiable, incluyendo también alguna de las IEEE International Reliability Physics
funciones de seguridad mencionadas en la sección Symposium Proceedings, 2006.
4.2. [12] Xilinx. Triple Module Redundancy Design
Techniques for Virtex FPGAs. XAPP197,
Referencias 2006.
[13] Xilinx. Correcting Single-Event Upsets
[1] R. Pierce, R. y Fowler, D. Applying IEC Through Virtex Partial Configuration.
61508 to Air Traffic Management. Making XAPP216, 2000.
Systems Safer, Springer-Verlag London [14] Xilinx. Partial Reconfiguration User Guide,
Limited, 2010. UG702. 2010.
[2] Conmy, P. y Bate, I. Component-Based safety [15] Lyons, R.G. Understanding Digital Signal
Analysis of FPGAs. IEEE Transactions on Processing (3rd Edition). Prentice Hall, 2010.
Industrial Informatics, vol. 6, 2010. [16] Xilinx. Infinitive Impulse Response Filter
[3] IEC. Standard, IEC 61508 Functional Safety Structures in Xilinx FPGAs, WP330. 2009.
of electrical/electronic/programmable [17] Xilinx. Device Reliability Report, Fourth
electronic safety-related system (Edition 1.0), Quarter 2010. UG116 (v5.12), 2011.
International Electronic Commission.
[4] Bell, R. Introduction and Revision of IEC
61508. Advances in Systems Safety, Springer
London Ltd., 2011.
[5] Clegg, J.R. Arguing the safety of FPGAs
within safety critical systems. 4th IET

34
JCRA 2011 | Tenerife 7-9 de Septiembre

Congurable-System-on-Programmable-Chip
implementation of a Global Navigation Satellite Systems
Receiver
(1) (2) (1) (1)
Victor Garcia , Mikel Garay , Asier Ibañez and Armando Astarloa

vgarcia020@[Link], [Link]@[Link], aibanez003@[Link], [Link]@[Link]


(1) Faculty of Engineering of Bilbao, University of the Basque Country

(2) Tecnalia Research & Innovation

Abstract his complexity oers many change options.


In Section 2 the architecture that will be ex-
Global Navigation Satellite Systems (GNSS) panded into multiple dynamic recongurable
have become a vital tool in many everyday and IP Cores is presented. In Section 3, the re-
specialized applications. The last advances conguration options will be analyzed propos-
in FPGA technologies allow to compress in ing dierent Cores with variations of the pre-
a single device many variants of a GNSS re- viously described elements. Finally, the pro-
ceiver implemented via Software Dened Ra- posed CSoPC architecture and the implemen-
dio (SDR) that was previously designed. tation results are summarized in Section 4.
In this paper a CSoPC system which uses The paper ends with the conclusions 5.
a dynamic recongurable IP Core that imple-
ments these variants is presented. Firstly, the 2 IP Core Architecture
functional non-concurrent operations are cap-
tured, and the dynamic IP core variants with The general design of the core that will
the rst implementation results are shown. be implemented using Partial Reconguration
Secondly the CSoPC architecture is presented (PR), is shown in Fig 1 [5]. It is composed of
with the implementation results of the static the following modules:
part.
• ADC I/F : The interface that gives way
1 Introduction to the digital signal in an Intermediate
Frequency (IF) that comes from the ADC,
In a standard static GNSS receiver there are converted there from the analog signal via
multiple receiver units, each of them dedi- undersampling. [1]
cated to a dierent satellite at a time and can • Band Filter : It locates the desired sig-
only use the satellite system (GPS, Galileo, nal in the working satellite band rejecting
GLONASS...) or band they were designed for. the frequency components that are not
In these modules, the received signal is demod- needed.
ulated and the bit ow is extracted. These
processes require an accurate synchronism. In • Baseband Converter : The IF signal is
order to track and adjust this synchronism, a converted to baseband correlating the
submodule "Tracking Loop" is added in the re- replica of a code which depends on the
ceiver. The research presented in this paper is satellite that is being tracked. Feedback
focused on exploring the possibilities to recon- is needed from the tracking loop in order
gure these units at hardware level, centering to adjust the replica to the phase of the
the inquiries in the sync module, which due to incoming signal.

35
Sesión I: Arquitectura y Diseño de SoC I

Figure 1: Module description of the GNSS receiver.

• Carrier Tracking Loop : Its function is • Accumulator : It uses an integrator and


to locate the variations in phase of the dump lter, the 50 Hz signal bits are ex-
carrier and generate an error signal that tracted.
the Baseband Converter will use to adjust
the replica carrier to the incoming signal. • Discriminator : Uses all the outputs from
Further explanation will be made about the correlator to produce a signal which
this part of the design. is proportional to the phase error existing
in the correlation process. The loop ther-
• Code Tracking Loop : Performs the same mal noise error and the maximum LOS
operation as the Carrier Tracking Loop dynamic stress threshold are determined
(TL), but chases the variations on phase by the algorithm used in this module.
of the signal once it is been wiped of the
carrier. It provides a ne adjust when the • Loop Filter : The objective of the loop
Carrier Loop has corrected the big dier- lter is to reduce noise in order to pro-
ences between the incoming signal and the duce an accurate estimation of the orig-
replica. inal signal at its output. Its order and
noise bandwidth also determine the track-
• Accumulator : The demodulation of the ing loops response to signal dynamics.
navigation data bits is accomplished
by accumulating the baseband samples The dierences between the Carrier Track-
across one data bit interval and checking ing Loop and the Code Tracking Loop are the
if the result is positive or negative. algorithms used in the Discriminator and in
the Loop Filter and the inputs for the dis-
The Code TL, the Carrier TL and the criminator. The signal that comes from the
Baseband Converter are the most important dierence between early and late correlations
parts of the design and will be the modules is only used in the Code Loop. Both TL share
where the reconguration eort will be cen- Correlator and Accumulator.
tered. Figure 2 shows the internal blocks of
the "Tracking Loops" module. The functional 3 Identication of the IP Core vari-
description of each submodule is detailed as ants
follows.
In order to identify the IP core variants that
• Correlator : The I and Q signals are cor- will be loaded through PR, the non-concurrent
related with an early, prompt, and late functionalities are identied.
replica of a code which depends on the
currently tracked satellite, the dierence 3.1 Band and GNSS switching
between these codes will allow to synchro-
nize the locally generated code with the As described in [1], using a SDR implemen-
incoming one. tation does not free from the analog frontend

36
JCRA 2011 | Tenerife 7-9 de Septiembre

Figure 2: Module description of the Tracking Loops.

but reduces it to a Low Noise Amplier and tions give a choice between a high accuracy
a lter for each satellite band, a Diplexer and even with a noisy incoming or a low compu-
a Combiner. This means that all the desired tational load, which has attached low power
signals are mixed when entering the AD con- consumption. Changing between IP Cores im-
verter and it is possible, using a dierent Base- plemented with dierent algorithms allows a
band Converter for each band to implement dynamically adjustment of the sensitivity of
solutions which employ the multiband possi- the device to the ambient noise level, reducing
bilities which are oered by many satellite sys- the power consumption.
tems like Galileo or GPS and make use of the
data received from dierent bands and GNSS. 3.4 Loop Filter

3.2 GPS, Galileo and GLONASS


The order and noise Bandwidth of the Loop
Filters determine the response of the receiver
The previously described receiver was de- to the dynamics stress. Higher order means
signed according to a GPS scheme, being the less sensitivity to the dynamics while requires
only current worldwide available GNSS. The more bandwidth to perform correctly, which
receiver must be changed in order to correctly causes a worse SNR. A lower order implies
track and demodulate the dierent signals. As a less complicated lter with less power con-
they are similar, the adaptation of the receiver sumption. Being able to switch this module
shown can be easily achieved. The dierences means that the receiver will be able to ad-
are centered on the modulation (BOC instead just to the dynamics of the moment, reducing
of BPSK) and the length of the PRN code the consumption and increasing the accuracy
(4092 instead of 1023)[3] so the Baseband Fil- when the dynamic stress is not high.
ter and the Correlator are the main modules
that will change signicantly. GLONASS [6], 3.5 IP Core Variants
on the other hand, uses a completely dier-
ent channel access method (FDMA instead of The Figure 3 shows a table where the basic
CDMA) which implementation would need a variants are proposed. The total combination
total redenition of the receiver. of all of them denes 8 dierent IP Cores. It
can be noticed that this number is produced
3.3 Discriminator
using extreme values of the SNR and the Dy-
namic Stress (High and Low), intermediate so-
There are many dierent mathematical algo- lutions could also be implemented increasing
rithms that can be implemented in the Car- in this way the number of variants.
rier Loop discriminator and the dierent op- In a non-recongurable device, if the data of

37
Sesión I: Arquitectura y Diseño de SoC I

Figure 3: Comparison table between the IP Core variants. (*) shows which cores must change and (-) which
not.

a minimum of 4 satellites is needed to compute resistant discriminator in the Tracking Loop


the position (often more at the same time are or a Galileo E5 Baseband Converter. When
used), 32 receivers would be needed to achieve an optimal solution has been found, the ac-
the same level of dynamism. Instead it can be tual data receivers will be changed progres-
reduced to the original 4 and switch between sively to the new conguration, which will be
the recongurable cores if the environmental translated into a great improvement of the re-
circumstances have changed. ception quality.

4 Introduction to the CSoPC archi- 4.1 CSoPC Architecture

tecture for IP Core management In Fig 4 the architecture of the proposed


and integration CSoPC is shown. Xilinx platform board de-
sign is follow. The main modules of the system
As it has been presented, multiple modules like are the following:
the described are needed in order to extract
the current position. These modules will be • Memory : The memory will be composed
static and only reprogramed when the central of a DDR RAM memory and a Sys ACE
control unit determines that a mayor change is IP core that interfaces the CSoPC with
needed. There will also be some quick switch- an external Compact Flash memory. This
ing modules that will test the performance of memory is need for full and partial bit-
dierent Cores according to the accuracy lec- streams storage.
tures coming from the working parts. • Communications : The communications
For example, supposing that in a certain section is formed by the UART and the
scenario the receiver modules are all work- Ethernet MAC. The UART is used for de-
ing with GPS in the L1 band and the in- bug and command purposes. In the other
coming signals become jammed, causing the hand, the Ethernet MAC allows commu-
SNR to drop. The central control unit will nication with other devices.
detect this event because the Carrier Track-
ing Loop will not be able to follow the car- • Conguration : This is one of the most
rier and will test dierent approaches to solve important parts; the ICAP. When partial
the problem; a module with a more jamming- recongurations are needed, the central

38
JCRA 2011 | Tenerife 7-9 de Septiembre

Figure 4: Block Diagram of CSoPC Controller.

control unit loads the partial bitstream later.


from the memory to the ICAP.
Resources Type Static Section
• PR Module : Here is where the GNSS core Slice Registers 7310(16%)
is implemented. Throughout all this pa- Slice LUTs 6134(13%)
per it has been explained in detail. Block-RAM 55(37%)
DSP48Es 3(2%)
4.2 CSoPC implementation ICAP 1(50%)
To implement the design a Virtex-5 Table 1: CSoPC Controller Implementation
XC5VFX70TFF1136-1 FPGA has been on a Virtex-5 FPGA
chosen. The ML507 board provides all the
peripherals required to implement all the
design. As can be seen in Table 1, the
static section composed by the memory, the Resources Type Static Section
communications and conguration blocks Slice Registers 9951(22%)
leaves sucient resources for the dynamic Slice LUTs 8723(19%)
section. Equally, Table 2 shows the imple- Block-RAM 11(7%)
mentation results of the dynamic section and DSP48Es 16(12%)
its resources consumption. ICAP 0(0%)
The system clock has been xed to 100 MHz
and the ICAP clock to 50 MHz to ensure the Table 2: GNSS Receiver Implementation on a
correct functioning of the partial recongura- Virtex-5 FPGA
tion. In future implementations ICAP clock
could be increased up to 100MHz if the sys-
tem still working stably. It isn't possible to After observing the results shown in Table 1
increase the clock speed beyond 100Mhz be- and Table 2, it can be armed that sucient
cause this is the top speed of the FPGA used space is available to implement the design on
on the design. The aim of the developers is the Virtex-5 FPGA.
to reach the higher speed possible for ensure a
fast reconguration without penalize the per- 5 Conclusions
formance of the system.
Faster speeds can be reached (up to The aim of this research is to take advantage of
300MHz) on ICAP clock according to [7] by Partial Reconguration techniques to develop
overclocking, but designers assume, as said, Autonomous Computing Systems for GNSS.
that rst of all is to guarantee a correct func- It is not dicult to imagine situations where a
tioning and improve it as much as possible GNSS design like the described can be useful.

39
Sesión I: Arquitectura y Diseño de SoC I

Only the ability to switch between reception Digital Signal Processing, 2008, pp. 256-
bands without doubling the hardware needs is 259.
worth the study. Nevertheless the employed
approach allow to think in many other appli- [2] E.D. Kaplan, "Understanding GPS Prin-
cations for receivers that need to perform rea- ciples and Applications", Artech House,
sonably in changing situations. This project INC., 1996
is still in development stage and the presented [3] European GNSS (Galileo) Open Service,
implementation results are preliminary, there- Signal In Space Interface Control Docu-
fore, there are not yet advanced results such as ment. European Comission for Enterprise
reconguration time or ICAP clock maximum, and Industry.
but the future options are many. Linux envi-
ronment can be added for example to provide [4] A. Astarloa, U. Bidarte, J. Lazaro, J. An-
a stable and controlled scenario for the appli- dreu, J.L. Martin. "Congurable-System-
cation. As an immediate step a single repro- on-Programmable-Chip for Power Elec-
gramming unit that performs a single change tronics Control Applications". In Recong-
like the correlation code will be implemented. urable Computing and FPGAs, 2008. Re-
However the main objective will be to create ConFig '08. International Conference.
a GNSS receiver that performs like described. [5] H. Hurskainen, T. Paakki, Zhongqi Liu,
As said, these are some of the improvements J. Raasakka, J. Nurmi; . "GNSS Receiver
that can be added in a nearly future. Reference Design". In 4th Advanced Satel-
lite Mobile Systems, 2008.
[6] GLONASS Satellite Navigation System.
Acknowledgment Russian Federation Ministry of Defence,
This work has been developed in Tecnalia En- [Link] .
terprise Classroom (2010-11) [7] C. Claus, R. Ahmed, F. Altenried, W.
Stechele; Towards Rapid Dynamic Par-
References tial Reconguration in Video-Based Driver
Assistance Systems. In Recongurational
[1] A. Alonso, J.M. Perre, and I. Arizaga, Computing: Architectures, Tools and Ap-
"SDR direct sampling device for multi- plications, 2010 6th International Sympo-
standard GNSS signals", 6th Symposium sium, ARC 2010.
on Communication Systems, Networks and

40
JCRA 2011 | Tenerife 7-9 de Septiembre

SESIÓN II:
FPGAS VERSUS MULTICORES/GPUS

Comparativa del uso de HLLs en FPGA, GPU y Multicore para la aceleración de una aplicación
de red IP ...................................................................................................................................... 43

Sistema empotrado de mejora del contraste para baja visión ...................................................... 51

FPGA Acceleration of a Monte Carlo method for pricing Asian Options using High Level
Languages .................................................................................................................................... 59

Acceleration of Electron Microscopy Applications with GPGPUs and FPGAs .......................... 67

41
42
JCRA 2011 | Tenerife 7-9 de Septiembre

Comparativa del uso de HLLs en FPGA, GPU y Multicore para


la aceleración de una aplicación de red IP

Víctor Moreno Martínez, Francisco J. Gómez-Arribas, Iván González Martínez,


Diego Sánchez-Román, Gustavo Sutter, Sergio López-Buedo
[Link]@[Link], [Link]@[Link]
Escuela Politécnica Superior, Universidad Autónoma de Madrid.

Resumen lenguajes de alto nivel [2] como Impulse-C o


HandelC, o bien la síntesis desde lenguajes de
Afrontar la creación de aplicaciones a partir de descripción de Hardware (Hardware Description
lenguajes de alto nivel (High Level Lenguajes - Languages - HDLs) como VHDL o Verilog.
HLLs) tiene la incuestionable ventaja de reducir el Extrapolando la filosofía subyacente en los
tiempo de desarrollo. Con ello, es viable una escenarios anteriores, se pueden considerar
evaluación anticipada del prototipo para conocer situaciones similares en aplicaciones
cuanto antes si se alcanza el rendimiento desarrolladas con GPGU (General Purpose
especificado como objetivo. En este trabajo se han Graphic Processing Unit). Al utilizar como
utilizando tres tecnologías de aceleración: coprocesador una GPU se consigue acelerar
multicore, coprocesador gráfico y coprocesador aplicaciones que encajen con el modelo de
reconfigurable, que aprovechan el procesamiento ejecución SPMD (Single-Program Multiple-
paralelo, y se ha realizado una discusión crítica de Data). La arquitectura interna de una GPU es un
su experiencia de uso a través de abstracciones de sistema ManyCore [3] cuyos recursos pueden
alto nivel. aprovecharse utilizando el entorno de
Las soluciones basadas en el uso de programación CUDA (Compute Unified Device
coprocesadores no sólo han aportado un nivel de Architecture) [4] en GPUs de Nvidia. Esta
rendimiento superior a la aplicación que se aproximación es similar al uso de HLLs ya que se
deseaba acelerar, sino que con vista al sistema describe la aplicación en lenguaje de propósito
final en producción, estas alternativas son general, concretamente lenguaje C,
especialmente interesantes por dejar libres los complementado con un API que abstrae los
cores de procesamiento para la realización de las detalles internos de la arquitectura.
operaciones de envío/recepción en la red de Siguiendo un criterio similar, se puede
comunicaciones. considerar comparable la manera de programar
que aprovecha el paralelismo de un sistema
1. Introducción multicore con memoria compartida. Esta
arquitectura está presente hoy en día en
prácticamente todo sistema que incorpore un
El ámbito de aplicación de los lenguajes de
procesador de propósito general. Utilizando
alto nivel es cada vez más amplio. Así
OpenMP [5-6] se consigue explotar el paralelismo
tradicionalmente, en aplicaciones para
multicore con modificaciones mínimas, que
procesadores de propósito general programar en
consisten en incluir directivas y pragmas en el
ensamblador es testimonial frente a la cantidad de
código de la aplicación descrita en un lenguaje de
desarrollos realizados en lenguaje C o similar.
alto nivel como FORTRAN o C.
Actualmente, en el diseño de sistemas
Además de la consiguiente disminución del
digitales en FPGAs se está produciendo una
tiempo de llegada al mercado que se consigue con
situación que guarda cierta similitud. Se plantea
aproximaciones basadas en HLLs, se debe valorar
un compromiso en términos de tiempo de
muy positivamente el decremento en el tiempo de
desarrollo, frente a rendimiento, según se utilice la
formación de un ingeniero, hasta alcanzar un
posibilidad de compilación hardware [1] desde

43
Sesión II: FPGAs versus Multicores/GPUs

grado de dominio razonable que le permita


producir soluciones operativas. Esto favorece
también que se incremente el número de
ingenieros dispuestos a desarrollar
implementaciones hardware (HW) al acercarse al
paradigma de desarrollo de aplicaciones
tradicional en software (SW).
En este trabajo se compara la utilización de
lenguajes de alto nivel para acelerar el Figura 1. Esquema de interconexión del sistema
rendimiento de una aplicación en tres tecnologías discriminador en la red.
muy diferentes: GPUs, Mulicore y FPGA. Los
resultados muestran que aunque el rendimiento En un primer estudio realizado sobre la red del
alcanzado en los tres casos puede ser cliente, se obtuvieron estadísticas sobre los
posiblemente mejorado si se utilizan una duplicados que aparecían en la red. El análisis de
metodología de diseño de más bajo nivel, esto no la distribución de duplicados mostraba que las
suele ser necesario porque ya se alcanza el ventanas de tiempo en que se detectaban los
rendimiento requerido. duplicados eran inferiores al minuto. Teniendo en
cuenta esta característica, se consideró la cantidad
de paquetes consecutivos en las que puede
2. Aplicación de red TCP/IP
aparecer un duplicado como la menor cantidad
que detectaba el 100% de los duplicados
En el marco de un proyecto industrial se está considerando la ventana temporal. Este valor
desarrollando un discriminador de tráfico para su resultó ser de 600 paquetes en la red analizada y
incorporación en una red de altas prestaciones. se definió como valor por defecto para el
Como se representa en el esquema de la figura 1, parámetro de configuración que define el tamaño
en el caso que nos ocupa, el escenario de de ventana de detección de duplicados
comunicaciones de red acumula a la entrada de un Asimismo, con vistas a mejorar la eficiencia
único equipo, tráfico de diferentes fuentes, que de la solución, fue necesaria la obtención de la
además de recibirse simultáneamente por varias cantidad de bytes de cada paquete que se
interfaces de red ópticas llega también con tasas utilizarían para la comparación de duplicidad. Se
muy elevadas. Adicionalmente se detecta la comprobó que con los primeros 54 bytes de cada
problemática de que parte del tráfico llega paquete (14 cabecera Ethernet + 20 cabecera IP +
replicado debido a una configuración que tiene la 20 cabecera TCP), se cumplía la condición
ventaja de garantizar la redundancia de la deseada. No obstante, para evitar problemas de
arquitectura de red. alineamiento de memoria, se decidió realizar una
En este escenario, la agrupación de gran implementación que tiene en cuenta los primeros
cantidad de tráfico, junto con la presencia de 64 bytes de cada paquete.
duplicados y triplicados de tramas hace que se Con los parámetros extraídos en el análisis del
incremente la tasa de línea que debe ser capaz de tráfico se propone evaluar el rendimiento de un
procesar el resto de equipos de supervisión. Por algoritmo de búsqueda de duplicados basado en
esta razón, se necesita eliminar los paquetes comparaciones realizadas contra todos los
duplicados, tras lo cual se debe realizar una paquetes que caben en la ventana. Esta
discriminación del tráfico sin duplicados entre aproximación es fácil de implementar desde
varios interfaces de salida. Así se logrará HLLs.
balancear la tasa de tráfico que sale por cada El sistema completo constará de un módulo de
interfaz. El objetivo final del discriminador es eliminación de duplicados y un módulo de
ajustar la tasa de paquetes de cada una de las discriminación. Como trabajo previo se van a
salidas para que sea viable realizar un posterior evaluar el rendimiento alcanzado en diferentes
análisis DPI (Deep Packet Inspection) en equipos tecnologías en las que se implementa el algoritmo
externos con necesidades menores en términos de de la aplicación desde HLLs. Se pretende elegir la
capacidad de procesamiento. tecnología que mejor se adapte, logrando un
compromiso entre tiempo de desarrollo, precio y

44
JCRA 2011 | Tenerife 7-9 de Septiembre

rendimiento. El punto de partida es una sistema 240 cores de procesamiento, que pueden
arquitectura similar a la de un servidor de hacer uso de una memoria interna compartida por
computación multicore con memoria compartida todos ellos de 4GB.
en el que se pueda incorporar según las
necesidades capacidad de coprocesamiento por 4. Implementaciones desde lenguajes de
GPU o con FPGA. Como paso previo se van a alto nivel
comparar las diferentes tecnologías sobre una
misma plataforma de prototipado que se describe 4.1. OpenMP en multicore (MPC)
en la siguiente sección. La arquitectura del
sistema final se decidirá en función de los La solución al problema planteada desde el
resultados obtenidos en la comparación punto de vista puramente MPC (Multi-Processor
considerando su escalabilidad y el rendimiento Computer) es la más sencilla posible, basándose
máximo que se puede extrapolar en cada caso. en el paradigma de programación de memoria
compartida, concretamente en el uso de OpenMP.
3. Plataforma de prototipado La aplicación consta de un bucle que recorre todos
El sistema en el que se ha llevado a cabo el los paquetes que se desean analizar, y que para
estudio es un servidor con una placa base dual cada paquete se recorre los TamVENTANA paquetes
Xeon, a la cual están conectados un procesador siguientes en busca del primer paquete que
Intel Quad-Core L5408 y un acelerador In-Socket cumpla la condición de duplicado. Para ejecutar el
basado en FPGA: el XD2000i de XtremeData [7]. programa aprovechando el paralelismo existente
El acelerador XD2000i, conectado al segundo en la arquitectura destino, simplemente se ha
socket de procesador de la placa, utiliza la colocado un pragma OpenMP delante del bucle
infraestructura de CPU existente en la placa base más externo.
para crear un entorno de coprocesamiento La compilación de esta implementación se ha
completamente funcional. realizado el compilador de libre distribución gcc,
La conexión entre el procesador Intel y el añadiéndole la opción –O3 con vistas a obtener
acelerador re realiza a través del Front-Side Bus los mejores resultados de rendimiento ofrecido
(FSB), pudiendo así sacar partido del alto ancho por esta herramienta de compilación.
de banda y la baja latencia de este método de 4.2. CUDA en manycore (GPU)
interconexión.
El acelerador In-Socket XD2000i se compone Tomando la solución MPC como punto de
de tres FPGAs Altera Stratix III [8]. Una de estas partida, se ha creado una solución basada en
FPGAs ejerce la labor de bridge hacia el FSB tecnología GPGPU. Mientras que la solución
(Stratix III SL150), mientras que las otras dos MPC puede parece demasiado burda, encaja en la
(Stratix III SE260, con 255K puertas lógicas, 768 filosofía de ejecución de las GPGPU: tenemos
multiplicadores embebidos y 15 Mb de memoria muchos paquetes, de modo que cada uno de los
interna) están disponibles para alojar la lógica cores de la GPU se encargará de realizar el
implementada por el usuario. Estas dos FPGAs procesamiento necesario para uno de los paquetes.
están a su vez directamente conectadas a través de El tiempo requerido para desarrollar la
dos canales unidireccionales de 64-bits solución GPU es también muy reducido utilizando
funcionando a una velocidad de 400 MT/s el paradigma de programación CUDA que ofrece
(millones de transacciones por segundo). Además, el fabricante NVidia para sus dispositivos.
el módulo XD2000i dispone de dos bancos de 4.3. Impulse-C en FPGA
memoria QDRII+ SRAM de 8 Mb cada uno, cada
uno de ellos conectado a una de las FPGAs de Para el desarrollo del sistema basado en
usuario. Toda la placa XD2000i funciona a una FPGA, se ha elegido utilizar una metodología
frecuencia de 100 MHz. basado en el empleo de lenguajes de alto nivel,
En la misma máquina, hay además conectada con vistas a agilizar el tiempo transcurrido hasta la
a través del bus PCI-Express una GPU Tesla obtención de un producto funcional.
C1060 de Nvidia [9]. Este coprocesador gráfico se Concretamente, se ha optado por el lenguaje
conecta a través de un bus PCIe x16, y aporta al Impulse-C [10-11]. La elección de este HLL para

45
Sesión II: FPGAs versus Multicores/GPUs

la realización del desarrollo se debe por un lado a paquetes (o todavía no ha llegado un paquete con
la existencia de un paquete de soporte de la ese valor de hash), entonces el paquete no es un
plataforma de la que se disponía (Plattform duplicado.
Support Package - PSP) y por otro lado a 3.) Si no se cumplen las condiciones de la etapa
anterior, se procede a comparar el paquete entrante
resultados previos obtenidos en otros trabajos con
con el paquete almacenado en la memoria que tenía
resultados muy satisfactorios [12]. Este lenguaje el mismo valor de hash. Si los paquetes son iguales,
tiene además un paradigma de programación el paquete entrante es entonces un duplicado.
basado en streams de datos, que facilita en gran
medida su utilización para propósitos de Llegado este punto, no podemos afirmar que si
coprocesamiento. el paquete es diferente al que residía en la
La primera aproximación es una comparación memoria, el paquete entrante no es un duplicado:
“por fuerza bruta”, análogo con los desarrollos puede ocurrir que hayan llegado otros paquetes
llevados a cabo en MPC y GPGU. De este modo, con el mismo valor de hash que el entrante antes
a la FPGA le irían llegando los paquetes en serie, que el que nos apuntaba la tabla. Por tanto, hemos
y para cada paquete realizaría la comparación de de tener una segunda tabla (que nos resuelve las
duplicidad con los TamVENTANA anteriores. Una vez “dobles colisiones”) que nos indica cuando fue el
terminadas estas comparaciones, se almacena el instante de tiempo en que llegó el último paquete
paquete en la memoria interna de la FPGA y se con un valor de hash igual al paquete entrante,
retorna el resultado (duplicado/no duplicado) a pero diferente del que se tiene almacenado en la
través de una interfaz de streaming. tabla. Una vez se cuenta con esta tabla, el
Debido a que Impulse-C permite explotar la algoritmo puede continuar:
característica de las memorias internas de la 4.) Se comprueba en la segunda tabla si hace
FPGA de permitir el acceso a dos datos en cada menos de TamVENTANA paquetes llegó un paquete con
ciclo de reloj, tendríamos que para obtener el el mismo valor hash que el entrante, pero diferente
resultado de cada paquete tardaríamos al que apuntaba la primera tabla hash. Si no se
TamVENTANA/2 ciclos de reloj. En el caso nuestra cumple esta condición, entonces el paquete es no es
aplicación (TamVENTANA =600) esto nos limita (sin un duplicado.
tener en cuenta otro tipo de overheads) a un 5.) Si se cumple la condición de la etapa
throughput de: anterior, se ha de comparar el paquete con todos los
−1 paquetes residentes en memoria en busca de
⎛ TamVENTANA 1 ⎞ −1 duplicados.
⎜ ⋅ ⎟ = (300 ⋅10ns) ≈ 3,3 ⋅10 pps
5

⎝ 2 100Mhz ⎠
La idea de esta aproximación es por lo tanto
Con vistas a obtener una solución cuyo reducir la cantidad de veces que se ha de recorrer
rendimiento no sea tan dependiente del tamaño de toda la memoria en busca de los posibles
ventana, se propone una arquitectura un poco más duplicados.
elaborada, ilustrada en la figura 2. En esta Puede realizarse un análisis teórico para
aproximación, se basa en la utilización de un hash comprobar si compensa o no una solución de este
que resuma el contenido del paquete. De este tipo. Si aceptamos que la función de hash genera
modo, dos paquetes con distintos valores de hash valores de manera uniforme, y suponemos
no pueden ser duplicados. Basándonos en esta independencia entre todos los paquetes (o más
idea, creamos una tabla indexada con los valores bien entre sus valores de hash), tenemos que la
del hash en la que se almacena la posición del probabilidad de que se produzca una colisión (que
último paquete que llegó con ese mismo valor. generen el mismo valor de hash) entre dos
Puesto que sólo se desea comparar con los últimos paquetes es:
TamVENTANA paquetes, a cada paquete entrante se le 1
asigna un timestamp que será almacenado en la p = P(colisión) = (1)
TamTABLA _ HASH
misma tabla en que se guarda su posición. Los
pasos del algoritmo seguidos son los siguientes: Queremos calcular ahora la probabilidad de
que se produzca una colisión entre el paquete
1.) Para cada paquete entrante se calcula un entrante con cualquiera de los TamVENTANA
valor de hash. anteriores. Para obtener este valor, se ha de
2.) Si el timestamp del último paquete con ese
valor de hash es de hace más de TamVENTANA

46
JCRA 2011 | Tenerife 7-9 de Septiembre

Figura 2. Diagrama de funcionamiento de la solución basada en HASH

utilizar la fórmula del principio de inclusión- sucesos, el cuadrado de lo que acabamos de


exclusión: definir como Panteriores. Podemos ahora calcular
⎛TamVENTANA ⎞ una estimación del tiempo que se tardará en
panteriores = P⎜⎜ Ucoli ⎟⎟ = procesar cada paquete:
⎝ i =1 ⎠ TamVENTANA
T = panteriores
2
⋅ + t decision (4)
∑ P (col ) − ∑ P (col ∩ col ) + ... +
TamVENTANA TamVENTANA
= 2
i i j
i =1 j <i =1 Donde denominamos a tdecision como el tiempo
por el que todo paquete debe pasar (las etapas 1-4
∑ P (col )
TamVENTANA
+ ( −1) k −1 j1 ∩ ... ∩ col jk + ... (2) en la descripción del algoritmo). Se ha
jk <...< j1 =1 comprobado a través de una simulación
Donde colk es el suceso que indica que habido comportamental que el valor de este parámetro
tdecision es de 40 ciclos de reloj (=400ns). Si
una colisión entre el paquete entrante y el paquete
sustituimos los valores de las variables de nuestro
k. En nuestro caso esta expresión puede reducirse
problema en la ecuación 4, podemos obtener una
a:
estimación conservadora de la capacidad
TamVENTANA
⎛TamVENTANA ⎞ k procesamiento de esta aproximación de 2,02·106
Panteriores = ∑ ( −1) k −1 ⎜⎜
k
⎟⎟p (3)
paquetes por segundo. Puede apreciarse una
k =1 ⎝ ⎠
Debido a que la probabilidad de que el mejora de casi un orden de magnitud en los
paquete entrante colisione con j paquetes rendimientos teóricos esperados por estas dos
anteriores es el producto de las probabilidades de implementaciones, por lo que parece razonable
que el paquete entrante colisione con cada uno de invertir esfuerzo en la implementación de esta
ellos por separado (por la propiedad de segunda solución basada en Impulse-C.
independencia), que es precisamente pj. Los
coeficientes binomiales aparecen debido a la 5. Resultados
cantidad de posibles elecciones de listas de k
paquetes entre los TamVENTANA anteriores 5.1. Implementaciones MPC y GPU
(combinaciones sin repetición de TamVENTANA En la figura 3 y la tabla 1 se presenta una
elementos tomados de k en k). Si evaluamos esta comparativa del rendimiento obtenido utilizando
expresión para los valores TamVENTANA=600 y las soluciones basadas en MPC y GPU, evaluado
TamTABLA_HASH=1024 (10 bits) y p=0,51 nos da en términos de la cantidad de paquetes por
que la probabilidad de una colisión con los segundo que son capaces de procesar. Se ha
paquetes anteriores es de 0,444. La probabilidad considerado para la realización de esta gráfica
de que haya que recorrer la memoria entera es la como caso peor aquel en que ningún paquete es un
probabilidad de que haya una doble colisión, que duplicado, de modo que todos los paquetes deben
es por lo tanto, suponiendo independencia de compararse contra el resto, y como caso mejor

47
Sesión II: FPGAs versus Multicores/GPUs

aquel en que todos los paquetes son duplicados y


encuentran un paquete similar a ellos en la
primera comparación realizada.

Figura 4. Throughput obtenido para tráfico real

Se ha observado que la espera hasta que se


generan los resultados no se produce de forma
Figura 3. Throughput MPC vs GPGPU asíncrona, pese a ofrecer al usuario esa impresión:
Puede apreciarse una diferencia de el proceso se suspende hasta que el driver le
rendimiento en el caso mejor a favor de la comunica que los datos están disponibles
solución multicore. Esta diferencia es debida al enviándole una señal. Sin embargo, en base al
overhead que supone realizar el envío de los datos comportamiento observado en la Figura 5 se ha
y la recogida de los resultados pertinentes comprobado que la implementación del driver
hacia/desde la GPU a través del bus PCIe. comprueba el estado de disponibilidad de los
datos de salida cada milisegundo, obteniendo de
Caso mejor Caso real Caso peor éste modo tiempos de cómputo múltiplos de un
(pps) (pps) (pps) milisegundo. Nos encontramos de este modo con
que en términos de tiempo, nos es indiferente
OpenMP 2,9·107 3· 105 2,0·105 enviar al coprocesador 15.000 ó 16.000 paquetes
en una misma transacción.
GPU 1,4·107 2,6·106 1,9·106 Al utilizar más tarde esta solución en el
sistema en producción se ha tenido en cuenta el
Tabla 1. Throughput máximo (paquetes por segundo) efecto de estas discontinuidades para seleccionar
MPC vs GPGPU adecuadamente la cantidad de paquetes enviados
por transacción.
5.2. Implementación en FPGA Tras realizar un análisis sobre cómo afecta el
Se han observado varias peculiaridades en el tamaño de la ventana de paquetes que se tienen en
comportamiento de la solución basada en Impulse- cuenta para la caracterización de duplicados al
C. En la Figura 4, que corresponde a medidas rendimiento del sistema. Lo más evidente de
realizadas sobre tráfico real, puede apreciarse que deducir sería que según se aumenta el tamaño de
el rendimiento obtenido en función del número de esta ventana, peor será el rendimiento obtenido,
paquetes enviados en cada transacción puesto que la cantidad de comparaciones a realizar
experimenta tendencias crecientes que caen es mayor. A continuación se verá que esto no es
repentinamente. necesariamente cierto.
Este comportamiento se produce debido al En la Figura 6 pueden apreciarse dos
API que el fabricante de la placa de aceleración comportamientos dignos de mención:
que se ha utilizado [7] provee para su uso. Este 1.) El rendimiento mejora en gran medida,
llegando a un 4x, para tamaños de ventana potencias
API cuenta con una función encargada de enviar
de 2. Esto es debido a que para almacenar los
los datos sobre los que se quiere operar al paquetes en la memoria del chip de cara a futuras
coprocesador y esperar a que se generen los
resultados.

48
JCRA 2011 | Tenerife 7-9 de Septiembre

Figura 5. Efecto del driver del fabricante en el Figura 6. Efecto del tamaño de la ventana en el
tiempo de cómputo del acelerador FPGA rendimiento del sistema
comparaciones, se utiliza un contador que se
En base a los resultados obtenidos, las
incrementa módulo TamVENTANA. La operación “%”,
comúnmente utilizada en programación de alto soluciones basadas en GPU y en FPGA son las
nivel, tiene en este caso efectos colaterales. Cuando que ofrecen un mayor rendimiento en términos de
el módulo se realiza con 2k, simplemente hay que capacidad de proceso del sistema. Ambas
quedarse con los k bits menos significativos del soluciones poseen como atractivo adicional la
contador. En el resto de casos, Impulse instancia un propiedad de dejar libres los cores de la máquina
componente de su librería que posee una gran para poder encargarse de la transferencia de los
latencia. Realizar un sencillo cambio de la sentencia datos desde/hacia la red de comunicaciones. Se ha
contador=(contador+1)%TamVENTANA; comprobado de forma empírica que este proceso
por un incremento seguido de una sentencia de envío/recepción de los paquetes por las
condicional: diversas interfaces de red es el cuello de botella
contador++; que limita el rendimiento del sistema, de modo
if(contador==TamVENTANA)
que la utilización de coprocesadores adquiere un
contador=0;
interés mucho mayor que las basadas en MPC.
se traduce en un rendimiento considerablemente
superior al de la GPU con nuestra FPGA (7,3·106 Impulse-C
OpenMP GPU Impulse-C
paquetes por segundo con la FPGA frente a los HASH
2,6·106 de la GPU manteniendo un tamaño de
ventana igual a 600). Throughput 3· 105 2,6·106 2,9·105 2,3·106
(pps)
2.) Separando los casos en que el tamaño de
ventana es potencia de dos y los que no, al aumentar Tabla 2. Throughput máximo de las cuatro
el tamaño de la ventana de comparación el implementaciones llevadas a cabo con TamVENTANA=600
rendimiento no se ve prácticamente afectado. Esto
Una comparación más justa supondría
es debido a que gracias a la utilización de los valores
de hash, la cantidad de veces que se ha de recorrer la incorporar una tabla hash también en las
memoria en busca de los paquetes es muy reducida. aproximaciones GPU y MPC. Sin embargo, el
paralelismo SIMD inherente en estas abstracciones
requiere de mecanismos de sincronización que
6. Discusión del rendimiento obtenido
complican la implementación. Para la aplicación
sobre tráfico real de red considerada, el procesamiento en stream de
la FPGA, en el que los paquetes se procesan de
La Tabla 2 resume los resultados de uno en uno, favorece la aplicación de soluciones
rendimiento representados en la figura 4, basadas en hash para esta tecnología.
comparando en términos de cantidad de paquetes
por segundo que cada solución es capaz de 7. Conclusiones y trabajo futuro
procesar con tráfico real.
Se ha comprobado la utilidad de varias
aproximaciones de programación de alto nivel

49
Sesión II: FPGAs versus Multicores/GPUs

para diferentes plataformas hardware. Este tipo de computing: A survey”. ACM Computing Surveys
enfoque ha servido para agilizar el tiempo de (CSUR), Vol.42 nº.4, páginas1-65, June 2010.
desarrollo de un prototipo funcional respecto a
otras aproximaciones con un nivel de abstracción [2] El-Araby E.; Nosum, P.; El-Ghazawi, T.;
menor: threads POSIX para la programación en “A Framework for Evaluating High-Level Design
MPC, NVAPI (un API que provee Nvidia para Methodologies for High-Performance
comunicarse directamente con el driver de la Reconfigurable Computers”, IEEE Transactions
tarjeta) en GPU, y lenguajes HDL para FPGA. on Parallel and Distributed Systems, pag. 33-45,
La curva de aprendizaje del lenguaje Impulse- Jan. 2011.
C es la más lenta de las tres. No obstante, es una [3] T.R. Halfhill; “Parallel Processing with
curva considerablemente más rápida que su Cuda Nvidia’s High-Performance Computing
equivalente en lenguajes de descripción hardware, Platform Uses Massive Multithreading”,
HDLs. La utilización de aproximaciones de alto Microproc. Report, Vol. 22, No. 1, Enero 2008.
nivel para la utilización de FPGAs hace accesible
a un público mucho más amplio que los HDLs la [4] Song Jun Park; Dale R. Shires; Brian J.
posibilidad de explotación de la capacidad de Henz.”Coprocessor Computing with FPGA and
cómputo de las mismas. GPU”. Proceedings Of The Hpcmp Users Group
De los resultados se concluye que las Conference 2008, páginas 366-370.
soluciones basadas en el uso de coprocesadores [5] L. Dagum; R. Menon; “OpenMP: an
han aportado un nivel de rendimiento superior a la industry standard API for shared-memory
aplicación que se deseaba acelerar. De cara al programming”. IEEE Computational Science &
sistema final en producción, estas alternativas son Engineering, Jan-Mar 1998.
especialmente interesantes por dejar libres los
cores de procesamiento para la realización de las [6] Alonso, P.; Cortina, R.; Martinez-
operaciones de entrada/salida de/hacia la red de Zaldvar, F.; Ranilla, J.; “Neville elimination on
comunicaciones. multi and many-core systems: OpenMP, MPI and
Para la versión en producción, se ha utilizado CUDA”, The Journal of Supercomputing, pag. 1-
la solución basada en GPU. En esta misma 11, 2009.
versión, se ha procedido a implementar la parte de
[7] XtremeData, Inc., “XtremeData XD2000i
discriminación del tráfico saliente en la propia
in-socket_accelerator”,
GPU, lo que ha supuesto una significativa
[Link]
degradación en la capacidad de cómputo del
in-socket-accelerator/xd2000i.
sistema. Esta discriminación del tráfico se hace en
base a unas reglas similares a los de los [8] Altera Corporation, “Altera FPGA
mecanismos de filtrado de red tradicionales devices”, [Link]
(basadas en rango de direcciones IP, rango de
puertos, protocolos,…). Este tipo de operaciones [9] Nvidia Tesla Computing Processor.
degradan en gran medida el rendimiento de la [Link]
GPU debido a que provocan que cada uno de los esla_C1060_US_Jan10_lores_r1.pdf.
hilos de ejecución vaya por una rama de ejecución [10] Impulse Accelerated Technologies,
diferente. “Impulse-C”, [Link]
Por esta razón, como línea de trabajo futuro se
propone realizar una versión basada en FPGA, en [11] D. Pellerin; S. Thibault; “Practical fpga
la que la parte de decisión de la interfaz de salida programming in C”. Prentice Hall Press.
de cada paquete pueda realizarse de forma muy ISBN:131543180 .
eficiente. [12] D. Sanchez-Roman; G. Sutter; S. López-
Buedo; I. González; F.J. Gomez-Arribas; J.
8. Referencias Aracil; “An Euler solver accelerator in FPGA for
computational fluid dynamics applications”. VII
[1] J.M.P. Cardoso; P.C. Diniz; M. Southern Programmable Logic Conference,
Weinhardt; “Compiling for reconfigurable SPL2011.

50
JCRA 2011 | Tenerife 7-9 de Septiembre

Sistema empotrado de mejora del contraste para baja visión

Martínez P.(1), Ureña R.(1), Morillas C.(1), Gómez J.M.(1), Pelayo F.J.(1)
pablomc@[Link], {ruperez, cmorillas, jmgomez}@[Link], fpelayo@[Link]
1
Departamento de Arquitectura y Tecnología de Computadores, CITIC, ETSIIT, Universidad de Granada

nocturna”) y presentan una gran sensibilidad ante


Resumen los deslumbramientos. Sin embargo, mantienen un
resto funcional útil, con buena agudeza, y que
Se presenta un sistema de mejora del contraste en puede ser potenciado para alcanzar la máxima
tiempo real basado en FPGA y adaptado para la funcionalidad posible.
visualización en un Head Mounted Display Con este objetivo se han desarrollado diversas
(HMD). La elección de FPGA está motivada por soluciones como Transformer USB o Flipper, de
sus características de bajo consumo y portabilidad. la empresa Enhanced Vision [3], que consiguen
El sistema está orientado a que personas con que la persona con baja visión emplee de forma
discapacidad visual puedan mejorar su más eficiente su resto visual a través del aumento
funcionalidad en entornos con iluminación no de las imágenes y la mejora del contraste entre
uniforme o que cambie rápidamente. El grado de luz/oscuridad así como de los colores, pero no
paralelismo que ofrecen los dispositivos FPGA consiguen desarrollar un control de ganancia local
permite alcanzar el procesamiento en tiempo real eficiente que proporcione imágenes claras y
para imágenes de resolución VGA, llegando a nítidas en todas las situaciones de iluminación.
tasas de hasta 60 imágenes por segundo. El Además suelen ser relativamente pesados, caros y
algoritmo de realce de contraste combina la difíciles de manejar en movimiento.
ecualización de histograma con un modelo de En este trabajo presentamos un algoritmo de
retina y ha sido también implementado de forma realce de contraste, implementado en dispositivos
paralela en una plataforma portátil basada en portátiles y de recursos limitados, basados en
GPU, con el objetivo de contrastar los resultados FPGA y GPU, que funciona en condiciones de
obtenidos. iluminación baja, no uniforme o que cambie
bruscamente. Con este sistema y su visualización
en un HMD buscamos que la persona
1. Introducción discapacitada visual pueda desenvolverse en este
tipo de entornos, donde antes no podía hacerlo de
Este trabajo se centra en el desarrollo de sistemas forma independiente.
de ayuda para baja visión, y más concretamente en El resto del documento está estructurado tal y
soluciones basadas en HMD para afectados de como se indica a continuación. El funcionamiento
Retinosis Pigmentaria (RP). La RP es una general del algoritmo se describe en la sección 2,
enfermedad ocular de carácter degenerativo y mientras que su implementación en FPGA ocupa
hereditario que produce una grave disminución de la sección 3. La siguiente sección recoge los
la capacidad visual, y que en muchos casos aspectos de la implementación en la GPU. Los
conduce a la ceguera. Sólo en España el número resultados son discutidos en la sección 5 y,
de afectados supera las 15.000 personas, finalmente, la sección 6 recoge algunas
estimándose en 60.000 las personas portadoras de conclusiones y trabajo futuro.
los genes defectuosos y por tanto posibles
transmisores de esta enfermedad. 2. Descripción del algoritmo
Las personas afectadas de RP disponen de un
campo de visión limitado, consecuencia de la
pérdida de visión periférica. La reducción Los dispositivos de visualización convencionales
progresiva lleva a la llamada “visión en túnel”. comprimen el amplio rango de niveles de
Además, tienen dificultades para adaptarse a la intensidad luminosa presentes en una escena del
oscuridad o a lugares poco iluminados (“ceguera mundo real en un rango de salida mucho más

51
Sesión II: FPGAs versus Multicores/GPUs

limitado. La dificultad de este proceso radica en componente de brillo sin alterar el resto
cómo hacer corresponder los niveles de intensidad de componentes. De esta forma se puede
entre los distintos rangos de forma que la imagen trabajar el contraste de la imagen sin
visualizada presente el contraste más adecuado. alterar su tonalidad.
En la literatura existente se pueden encontrar 2. Filtrado espacial basado en un modelo de
múltiples operadores que realizan esta función y retina. La salida de esta etapa es una
cuya clasificación se puede establecer en dos imagen en escala de grises que enfatiza
grandes campos: globales o locales. determinadas características como son
Los operadores globales, como el propuesto los bordes y que atenúa otras como son
por Drago et al. [2], aplican una única función de las zonas excesivamente brillantes.
transformación global a todos los píxeles de la 3. Ecualización local adaptativa con objeto
imagen. Los operadores locales, sin embargo, de distribuir los niveles de grises del
realizan un tratamiento de la imagen por histograma de forma que se puedan
subzonas. Un ejemplo de operador local es el de resaltar aquellas zonas de la imagen mal
Hu et al. [5], que emplea filtros bilaterales y que contrastadas.
divide la imagen en diferentes regiones en base al 4. Combinación lineal de las etapas 2 y 3 en
histograma global y después realza dichas base al nivel de intensidad promedio
regiones de acuerdo a sus propiedades presente en la imagen.
individuales. 5. Conversión de nuevo al espacio de color
Otra distinción puede establecerse entre RGB a partir de las componentes
operadores estáticos y dinámicos. La mayoría de inalteradas (H y S) y de la componente
los operadores son estáticos y están ideados para de brillo (V) procesada.
procesar imágenes fijas. Por otra parte, los
dinámicos están explícitamente diseñados para 2.1. Procesamiento basado en el modelo de
procesar flujos de imágenes y pueden ir adaptando retina
a lo largo del tiempo sus parámetros de
configuración. Usando como entradas las componentes RGB
Muchos de estos operadores han sido podemos diseñar una serie de filtros espaciales
implementados en FPGA, como es el caso del que modelan la función de las células bipolares de
ecualizador adaptativo del histograma diseñado la retina. La oposición entre el centro y la periferia
por Ali M. Reza en [12], que será adaptado para de los campos receptivos de estas células puede
funcionar dentro de una etapa de nuestro diseño ser modelada con un filtro de Diferencia de
en FPGA. Gaussianas (DoG), de acuerdo a la ecuación (1):
Sin embargo, todos estos algoritmos tienen 1 1 +
dificultades para procesar imágenes que combinen = − = exp −
2
√2 (1)
zonas con intensidades luminosas muy altas y 1 +
zonas muy oscuras en una misma escena. Es por − exp −
2
ello que hemos implementado un algoritmo que
donde las Gaussianas y son aplicadas a
supere estas dificultades de cara a poder ser
las diferentes componentes de color.
utilizado en baja visión. Este algoritmo puede ser
Este modelo de visión realiza dos operaciones
clasificado como local, estático y adaptativo ya
de filtrado: mejora del contraste de color (magenta
que puede realizar el procesamiento requerido en
frente al verde y amarillo frente al azul) y un
función de las condiciones de iluminación.
filtrado adicional de mejora del contraste de la
En definitiva, el algoritmo aquí planteado
intensidad que resalta los bordes de la escena.
puede dividirse en las siguientes etapas
Hemos elegido esta combinación de canales de
funcionales:
color a la entrada con el objetivo de imitar la
1. Extracción de las componentes de
forma en que la retina humana combina la señal
tonalidad (H), saturación (S) y brillo (V)
de los tres tipos de conos.
de la imagen de video entrante. El
Este procesamiento inspirado en el modelo de
cambio del espacio de color RGB al
retina ha sido previamente utilizado y contrastado
espacio HSV permite realizar un
en sistemas de procesamiento más generales como
tratamiento individualizado de la
Retiner [7,10] y Vis2Sound [6].

52
JCRA 2011 | Tenerife 7-9 de Septiembre

3. Implementación en FPGA 3.1. Filtro de retina

El diseño ha sido implementado usando VHDL y El proceso de convolución necesita un conjunto de


sintetizado para una FPGA Xilinx Spartan III píxeles vecinos al píxel que está siendo
XC3S2000, que dispone de 2 millones de puertas actualmente procesado y que se encuentran en
y 720 Kbits de BlockRAM. filas distintas a la de dicho píxel. Teniendo en
Este chip viene integrado en la plataforma SB cuenta que la SRAM de la placa nos proporciona
[14] para procesamiento de video, de Seven un píxel en cada ciclo de reloj hay que buscar
Solutions, que incluye 36 Mbits de SRAM para el alguna forma que nos permita disponer de los
intercambio de datos y todas las interfaces píxeles de filas anteriores. Para resolver este
necesarias para la entrada y salida de video, problema se ha usado una arquitectura de cómputo
adaptadas a los estándares VGA y PAL. La de la operación de convolución basada en la
elección de esta plataforma está basada en su bajo propuesta por Ridgeway en [13] y que se puede
consumo y tamaño reducido. Incluye una batería ver en la figura 2.
que permite hasta 10 horas de autonomía. Para un filtrado con máscaras de tamaño 7x7
La figura 1 resume el proceso que siguen las se han usado 7 buffers de tipo FIFO que
imágenes de vídeo desde que son capturadas por almacenan las primeras 7 filas de la imagen y 7
la cámara hasta su visualización en HMD una vez registros de desplazamiento que son los
procesadas según el algoritmo de realce del encargados de almacenar los 49 píxeles de la
contraste. vecindad para la convolución actual.
La entrada analógica se introduce en el La conexión en serie de las memorias FIFO
convertidor ADC, que codifica cada píxel. emula el desplazamiento vertical de la máscara y
Para separar los diferentes dominios de reloj la transferencia de valores entre las memorias
(el convertidor trabaja a 27 MHZ y el resto del FIFO y los registros emula el desplazamiento
circuito a 40 MHZ) se ha usado la técnica del horizontal.
doble buffering, evitando el procesamiento de A continuación, los acumuladores de la
imágenes que no estén totalmente capturadas. siguiente etapa del cauce, marcados como
Para maximizar el rendimiento del sistema y “ACCUM x” en la figura 2, suman aquellos
explotar al máximo el paralelismo se ha elegido píxeles que van a ser multiplicados por los
una arquitectura segmentada, capaz de procesar un mismos coeficientes de la máscara. Una vez
píxel en cada ciclo de reloj. multiplicados por dichos coeficientes, obtenemos
En las secciones que vienen a continuación se 6 productos, que se corresponden con los seis
explican los dos bloques de procesamiento términos de la ecuación (2), obtenidos al
principales: la ecualización local adaptativa y el descomponer linealmente las 3 Diferencias de
filtro de retina. A continuación se analizarán los Gaussianas aplicadas en el filtrado.
bloques de conversión entre los distintos espacios
de color, que también merecen especial atención. + +
, , , + , , ,
Por último se detallará cómo se realiza la 2 2
+ + + +
combinación lineal para obtener la imagen + , , ,
3 3 (2)
procesada.
= (4 3) ( )− 1 3 ( )+ 5 6 ( )
− 43 ( )+ 1 3 ( ) − (4 3) ( )

SAA7113H
AD CONVERTER
INPUT
VIDEO SRAM RETINA LINEAR
READ FILTER COMBINATION
MODULE
OUTPUT
RGB
HSV TO RGB
FIFO (DATA) SRAM RGB TO HSV INTENSITY CONVERTER
FIFO (ADDRESS) CONTROL CONVERTER EQUALIZER

Figura 1. Esquema general del sistema implementado en FPGA.

53
Sesión II: FPGAs versus Multicores/GPUs

WEIGHT
DECISION

2
ACCUM RED_09 C1
FIFO SHIFT REGISTER
X2 ACCUM

M U X
FIFO SHIFT REGISTER … 16
COMBINATION

FIFO SHIFT REGISTER ACCUM


X 16
… C2
GRAY
… … …
LEVEL
28
ACCUM BLUE _1.2
FIFO SHIFT REGISTER
24 bits X 28 ACCUM
(RGB)
Figura 2. Circuito para el filtrado espacial según el modelo de retina.

las 35 funciones de distribución


3.2. Ecualización local adaptativa acumulada guardadas en memoria.
5. Una vez que se comience a recorrer la
Para implementar el ecualizador nos hemos nueva imagen se pueden ir leyendo de los
decantado por una estructura de ecualización local módulos de BlockRAM los datos
adaptativa basada en el algoritmo CLAHE. La correspondientes al píxel actual de forma
principal idea de la ecualización adaptativa es paralela a la ejecución de los pasos
procesar cada píxel en base al subconjunto de anteriores.
píxeles que lo rodean y no a la imagen completa. Esos datos leídos corresponden tanto al bloque
Este método supone una carga computacional actual como a los 3 bloques adyacentes según el
excesiva ya que es necesario repetir los cálculos cuadrante donde se encuentre el pixel procesado
tantas veces como píxeles haya en la imagen. (ver figura 3). La arquitectura de interpolación
Una alternativa a la ecualización adaptativa implementada en base a estos 4 datos es similar a
completa consiste en dividir la imagen en una la utilizada por Ali M. Reza en [12].
serie de regiones contextuales, ecualizar cada
región e interpolar aquellas regiones adyacentes.
Éste es el funcionamiento del algoritmo
CLAHE, discutido en [11]. Para imágenes que
presentan zonas fuertemente contrastadas, los
algoritmos de ecualización global del histograma
amplifican sobremanera las zonas más oscuras.
Sin embargo, el algoritmo CLAHE, al tratar de
forma local cada conjunto de píxeles, genera una
imagen realzada sin provocar estos artificios.
Para llevar a cabo su implementación, se ha
dividido la imagen de niveles de gris (V) en 35
bloques (5 filas x 7 columnas) de tamaño 100x100
píxeles. A grandes rasgos, el proceso en la FPGA Figura 3. Cada bloque en los que se divide la imagen es
se realiza en los siguientes pasos: dividido a su vez en cuatro cuadrantes. Un dato en un
1. Se calculan las funciones de distribución cuadrante determinado es interpolado según los otros 3
cuadrantes adyacentes.
acumulada para los niveles de gris de los
7 primeros bloques que pertenecen a la
primera fila y se guardan en registros.
2. Se transfiere su contenido a módulos de 3.3. Conversión de espacio de color
BlockRAM y se inicializan los registros.
3. Se pasa a leer la siguiente fila de bloques. El cálculo de la componente de tonalidad (H)
4. Se repiten los pasos 1, 2 y 3 hasta que se implica realizar operaciones muy costosas
termine de recorrer toda la imagen. computacionalmente [4], como son raíces y
Disponemos, una vez llegado al final, de arcocosenos. Para solucionarlo, se ha guardado en
los módulos de BlockRAM una tabla de consulta

54
JCRA 2011 | Tenerife 7-9 de Septiembre

de 215 posiciones de 8 bits cada una con los por bloque y el espacio de memoria compartida
valores de H. Esta tabla emplea un 36% de la entre las hebras de cada bloque.
memoria disponible (262 Kbits). Para la La figura 4 resume el flujo de cómputo
optimización del resto de operaciones aritméticas seguido por las imágenes de video desde que son
(divisiones para obtener las componentes S y V) y capturadas a la entrada hasta que se obtiene la
funciones trigonométricas (cosenos para la imagen procesada a la salida.
conversión de HSV a RGB), se han usado IP La interfaz entre la CPU y la memoria global
cores de Xilinx. El diseño escogido está de la GPU, vía PCI-express, constituyen el cuello
totalmente segmentado y se puede conseguir un de botella de la aplicación. Así pues cada canal de
rendimiento de una división por ciclo de reloj. color se codifica con enteros de 1 byte sin signo,
empleándose 3 bytes para codificar cada píxel.
4. Implementación en GPU
4.1. Implementación del filtro de retina
Manteniendo los requisitos de portabilidad,
consumo reducido y ejecución en tiempo real se La implementación en GPU del procesamiento de
ha elegido la GPU NVIDIA ION2 [8]. Esta GPU retina se basa en realizar operaciones de
es compatible con la NVIDIA CUDA API [9], por convolución 2D separables cuyo alto grado de
lo que se ha usado CUDA para paralelizar el paralelismo a nivel de datos encaja a la perfección
operador de realce del contraste. Los detalles de con la arquitectura de la GPU. Para llevar a cabo
implementación de una versión similar del sistema esas operaciones en tiempo real se han
de ayuda basado en esta GPU pueden encontrarse desarrollado dos kernels de filtrado en CUDA,
en [15]. uno para las filas y otro para las columnas. Ya que
Esta GPU dispone de 16 procesadores y está ambos son muy similares, detallaremos las
disponible en un ligero netbook, el ASUS características del de filas únicamente.
EEEPC PN 1201 [1], con una batería que La operación de convolución requiere una
proporciona autonomía de 4 horas. Además, el vecindad con el mismo tamaño que la máscara de
sistema aprovecha el procesador Intel Atom N450, filtrado para el cálculo de cada píxel. Esto
integrado en el netbook utilizado. significa que cada hebra transfiere un dato desde
La GPU incorpora dos multiprocesadores. la memoria global a la memoria compartida. Para
Cada multiprocesador tiene una unidad de obtener la máxima precisión y evitar conflictos de
instrucción, 8 procesadores elementales (SP) que banco en la memoria compartida, estos datos se
ejecutan la misma instrucción sobre distintos almacenan en punto flotante. Por lo tanto, hay n-1
datos (SIMD) y una memoria local (16 KB). Con hebras por bloque que sólo cargan datos, pero que
objeto de extraer el máximo rendimiento de los no calculan ningún píxel procesado. Para no
SPs, minimizando los retardos asociados a los emplear demasiadas hebras en esta etapa de carga,
accesos a memoria, necesitamos asignar 4 hebras el tamaño del bloque debe ser lo suficientemente
a cada SP, que son entrelazadas en el SP. Por grande comparado con el tamaño de la máscara.
tanto, debemos asignar al menos 32 hebras a cada Se ha ajustado el tamaño de bloque a 1x128, y el
multiprocesador. tamaño de la máscara de 7x7.
La utilización de cada multiprocesador de la Cuando todos los datos están guardados en la
GPU debe ser máxima para poder aprovechar memoria compartida, cada hebra multiplica los
realmente este mecanismo de minimización de la coeficientes del filtro, guardados en la memoria
latencia del hardware. Para optimizar el uso de los para constantes, con el correspondiente píxel y su
procesadores disponibles, los parámetros que vecindad. El resultado se guarda en la memoria
deben ser determinados son el número de hebras global. Cada hebra repite este procedimiento dos
veces, una vez por cada máscara.

55
Sesión II: FPGAs versus Multicores/GPUs

CPU processes CPU memory GPUmemory


GPU memory GPU processes

- Image capture
- Memory management
RGB input image

Contrast enhancement
- RGB2HSV conversion
HSV image
- Coarse-to-fine control
V sub-histograms

- Sub-histograms combination
- Histogram equalization
T V Global histogram
I - Look-up-table substitution
M Look-up table

E Retina-like processing
- Weighting factors calculation - 1D convolutions
Weighting factors
- Linear combinations
- Memory management Retina output
- Enhanced Brightness channel computations
Enhanced Brightness channel
- HSV 2 RGB conversion
Output image
- Final Image visualization

Figura 4. Secuencia de procesos que se ejecutan en CPU y GPU, las flechas en línea continua y discontinua indican
transferencias de datos grandes y pequeñas respectivamente.

La tabla 2 compara el rendimiento en frames por


4.2. Conversión HSV y ecualizador segundo (fps) que se obtiene en la CPU, en la
FPGA y en la GPU, así como la mejora en
Este kernel se implementa con 256 hebras y usa 4 velocidad que se alcanza respecto de la CPU para
KB de memoria compartida para almacenar los resolución VGA.
píxeles necesarios y el histograma del bloque. El Hay que destacar, también, que en la tabla 2
procedimiento seguido es el siguiente: cada no se han tenido en cuenta los tiempos de captura
bloque carga 1024 píxeles en la memoria de la imagen para la implementación en la GPU,
compartida de la GPU y cada hebra carga 4 datos; que reduciría a 28 fps el rendimiento de la misma.
una vez que todos los datos están guardados en la En los resultados obtenidos, hay que tener en
memoria compartida, cada hebra calcula 3 píxeles cuenta que la GPU realiza los cálculos en
en formato HSV y los guarda en la memoria precisión de punto flotante, mientras que la
compartida. Además, cada bloque calcula su FPGA, que no tiene soporte nativo para aritmética
propio histograma del canal de intensidad. de punto flotante, usa números enteros. La posible
pérdida de precisión que supone trabajar con
enteros se presenta sólo en los módulos de
5. Resultados conversión entre espacios de color, para los que se
ha buscado un compromiso entre la calidad de la
Una vez vistas las características de ambas imagen resultante y el tamaño de las tablas de
arquitecturas, FPGA y GPU, vamos a discutir los consulta utilizadas en su implementación. No
resultados obtenidos en base al rendimiento obstante, una implementación final dependerá de
alcanzado, el número de recursos utilizados y la las pruebas realizadas con pacientes de baja
mejora de velocidad en comparación con la visión.
ejecución del algoritmo implementado en Matlab Además, por escasez de memoria BlockRAM,
sobre una CPU Intel Core i7 920 (2,67GHz y 4 la FPGA sólo permite realizar el cálculo del
GB de memoria RAM). histograma utilizando 64 niveles de gris. La
Como hemos mencionado anteriormente, el implementación de la GPU utiliza el mismo
sistema completo ha sido implementado en una número de niveles para obtener datos comparables
GPU NVIDIA ION2 y en una FPGA Spartan 3 de con ambas aproximaciones, si bien ha sido posible
Xilinx. Los resultados que reflejan el área de su implementación con 256 niveles de gris
ocupación y la máxima frecuencia de reloj para la sufriendo una penalización en su rendimiento de
implementación en FPGA se recogen en la tabla 1. tan sólo 3 fps.

56
JCRA 2011 | Tenerife 7-9 de Septiembre

Parameter Value 6. Conclusiones y trabajo futuro


Slices 13282 (64 %)
LUTs 16414 (40.07 %) En este trabajo se han presentado dos
RAMB 39 (97 %) arquitecturas paralelas, basadas en una FPGA
Fmax 40.25 MHz Spartan III y en una GPU NVIDIA ION2, que
MULTs 33 (82 %) implementan un algoritmo de realce del contraste
BUFGMUXs 7 (87 %) para baja visión, alcanzando tasas de
DCMs 2 (50 %) procesamiento en tiempo real. Su implementación
se ha llevado a cabo en sistemas portátiles y de
Tabla 1. Área y velocidad en una Spartan III XC3S2000. bajo consumo, con la finalidad de facilitar la
autonomía de las personas afectadas visualmente
CPU GPU FPGA en condiciones de baja iluminación, cambios
Performance (fps) 4 33 60 bruscos y niveles de luminosidad extremos en la
Speed up - 8.25 15 misma escena.
Tabla 2. Rendimiento de la FPGA y de la GPU. Si bien por un lado la FPGA alcanza un mayor
número de frames por segundo, la GPU realiza los
En la figura 5 se muestra la secuencia de cálculos con mayor precisión en los cálculos,
imágenes obtenidas para cada etapa de repercutiendo en una mejor calidad de las
procesamiento en FPGA. La primera corresponde imágenes de salida.
con la imagen original obtenida del dispositivo de En ambos casos, la latencia de procesamiento
captura de vídeo. Se puede observar que la mitad obtenida es adecuada para el uso del sistema de
izquierda de la imagen está oscurecida y poco ayuda en movimiento, con retrasos imperceptibles
contrastada mientras que la mitad derecha por la persona que lo porta. La validación final de
presenta un brillo excesivo que proviene de la la aplicación pasa por su uso por parte de los
puerta. La siguiente imagen, que se corresponde afectados de baja visión en escenarios en los que
con la salida del filtrado de retina, atenúa esta encuentran especial dificultad, con condiciones de
zona de brillo molesta y realza otras zonas de la iluminación no controladas.
imagen como son los bordes y la textura de la piel.
La tercera imagen se obtiene como resultado del 7. Agradecimientos
procesamiento en el ecualizador adaptativo, que
elimina los problemas de contraste en la mitad Este trabajo ha sido financiado por el proyecto de
oscurecida. La última imagen se corresponde con la Junta de Andalucía P06-TIC-02007, los
el resultado final del algoritmo completo. Esta proyectos nacionales RECVIS (TIN2008-06893-
imagen combina el procesado de la etapa de C03-02) y DINAM-VISION (DPI2007-61683), el
filtrado espacial, que se refleja en la atenuación proyecto GENIL-PYR-2010-19 del CEI BioTIC
del brillo y en el realce de ciertas zonas, y la GENIL CEB09-0010, y el programa de becas de
ecualización de mejora del contraste. Iniciación a la Investigación de la Universidad de
Granada.

Figura 5. De izquierda a derecha: la primera imagen se corresponde con la entrada de vídeo del sistema; el resto de
imágenes se corresponden con las siguientes etapas de procesamiento: salida del filtrado de retina, salida del ecualizador
y salida final procesada.

57
Sesión II: FPGAs versus Multicores/GPUs

[9] NVIDIA Corporation, NVIDIA CUDA C


Referencias Programming Best Practices Guide 2.3.
(2009)
[1] Asus EEPC 1201 PN. [10] Pelayo F.J., Romero S., Morillas C., Martínez
[Link] A., Ros E., Fernández E., “Translating Image
Lbhfgdnpw5FaY, (2011) Sequences into Spike Patterns for Cortical
[2] Drago, F., Myszkowsky, K., Annen, T., Chiba, Neuro-stimulation. Neurocomputing”, Vol.
N., ” Adaptative logarithmic mapping for 58-60, pp. 885-892.(2004)
displaying high contrast scene”. Comput. [11] Pizer, S. M., Amburn, E. P., Austin, J. D.,
Graph. Forum, 22, pp 419-426, 2003. Cromartie, R., Geselowitz, A., Greer, T., Haar
[3] Enhanced Vision. Romeny, B.M. ter, Zimmerman, J. B.,
[Link] (2011) Zuiderveld, K., “Adaptive Histogram
[4] González, R. C., Woods, R. E., Eddins S. L., Equalization and its Variations,” Computer
“Digital Image using Matlab processing”. Vision, Graphics and Image Processing, vol.
Pearson. Prentice Hall. 2004. 39, 1987, pp. 355–368.
[5] Kuo-Jui Hu, Min-Yao Lu, Je-Chuang Wang, [12] Reza, Ali M., “Realization of the Contrast
Tao-I Hsu, and Ting-Ting Chang, “Using Limited Adaptive Histogram Equalization
Adaptive Tone Mapping to Enhance Edge- (CLAHE) for Real-Time Image
Preserving Color Image Automatically,” Enhancement”. Journal of VLSI Signal
EURASIP Journal on Image and Video Processing 38, 2004.
Processing, vol. 2010, Article ID 137134, 11 [13] Ridgeway, D., “Designing Complex 2-
pages, 2010. doi:10.1155/2010/137134 Dimensional Convolution filters”. The
[6] Morillas C., Cobos JP., Pelayo FJ., Prieto A., programable Logic DataBook, Xilinx. 1994.
Romero S., “VIS2SOUND on Reconfigurable [14] SB platform.
Hardware”, 2008 International Conference on [Link]
Reconfigurable Computing and FPGAs. =262&subseccion=270, (2011)
[7] Morillas C., Romero S., Martínez A., Pelayo [15] Ureña R, Martínez-Cañada P, Gómez-López
F., Reyneri L., Bongard M., Fernández E., A J.M., Morillas C., Pelayo F., “A portable low
“Neuroengineering suite of Computational vision aid based on GPU”. First International
Tools for Visual Prostheses. Conference on Pervasive and Embedded
Neurocomputing” 70(16-18): 2817-2827. Computing and Communication Systems.
(2007) PECCS 2011, Vilamoura, (Portugal) 5-7
[8] GPU NVIDIA ION 2. March 2011. ISBN: 978-989-8425-48-5, pp.
[Link] 201-206.
[Link], (2011)

58
JCRA 2011 | Tenerife 7-9 de Septiembre

FPGA Acceleration of a Monte Carlo method for pricing


Asian Options using High Level Languages
Diego Sánchez-Román, Sergio López-Buedo, Gustavo Sutter,

Iván González, Francisco J. Gómez-Arribas and Javier Aracil

{[Link], [Link]-buedo, [Link], [Link], [Link], [Link]}@[Link]

Escuela Politécnica Superior, Universidad Autónoma de Madrid

Abstract method for pricing Asian Options.


Options are contracts between two parts re-
In this paper we present a FPGA implemen- garding some asset or stock price. The holder
tation of a Monte Carlo method for pricing of a call option has the right to buy the under-
Asian Options using Impulse C and oating- lying asset at a certain price and date. Simi-
point arithmetic. The hardware implementa- larly, the holder of a put option has the right
tion has been produced in a very short time to sell the underlying asset in the same terms.
thanks to the avoidance of HDL development. The price in the contract is known as the ex-
Performance to eort rate is remarkable, as ercise price or strike price, and the date in the
we obtain an 85x speed-up factor against an contract is known as the expiration date or
OpenMP solution in an Intel Core i7 860 us- maturity (T ). Regarding the time when the
ing 4 cores. option can be exercised, we can distinguish
between American or European options. The
former ones allow the holder to exercise the
1 Introduction
option at any time up to the expiration date.
However, European options can only be exer-
Monte Carlo simulations are based on the
cised at maturity. With regard to the strike
computation of random experiments follow-
price, it is the price of the underlying asset
ing a determined probabilistic distribution.
at the exercise time for both American and
However, these simulations take too much
European options. Asian options come to re-
time since the number of random experiments
move the risk of market manipulation, since
needed to converge to the solution is usually
the strike price is computed as the mean price
huge. FPGAs are good candidates to com-
over the life of the option.
puting acceleration since they allow to de-
Under Black Schole's model, the stock price
sign custom architectures optimized to solve
movement is given by the equation:
a specic problem taking advantage of much
more higher levels of parallelism than CPUs. √
v2
The main drawback in hardware development Si+1 = Si e((r− 2
)∆t+v ∆tW )
(1)
has been the use of hardware description lan-
guages (HDLs) whose utilization is attached were Si is the price at step i, r is the interest
to high development times and painful veri- rate, v is the volatility of the underlying stock
cation processes. In order to relax this pro- price, ∆t is the time between two time steps
cess, last years have seen the advent of HDL and W is a Gaussian random number.
compilers which generate HDL code from high Monte Carlo computations need to evaluate
level languages such as C or derivates. In this several paths in order to converge to the solu-
work, we use the Impulse C tool [1] to gener- tion. Because of that, a huge amount of ran-
ate a hardware description of a Monte Carlo dom numbers is needed and its quality is very

59
Sesión II: FPGAs versus Multicores/GPUs

important. Big eort have been done in com- section 6. Here we compare the multicore CPU
puter science to produce high quality pseudo- solution with the FPGA implementation using
random uniform samples, since they allow to several Monte Carlo parallel cores. Finally,
produce samples of any other distribution. In- some conclusions are drawn in section 7.
deed, let ui be a sample of the uniform dis-
tribution in (0, 1), X the target distribution
2 Impulse C
and ICDF its Inverse Cumulative Distribu-
tion Function. Then,
Impulse C extends standard ANSI-C using

zi = ICDF (ui ) C-compatible predened library functions in


support of a communicating process paral-
is a sample of X. lel programming model. This programming
Therefore, a high quality uniform pseudo- model is conceptually similar to a dataow
random generator is required. There are two or communicating sequential process program-
key properties to measure the goodness of such ming model in that it simplies the expres-
generator: its period p and its k-dimensional sion of highly parallel algorithms through
equidistributed property [2]. One of the best the use of well-dened data communication,
uniform random generators is the Mersenne message passing, and synchronization mech-
19937
Twister, which has a period of 2 − 1 and a anisms. The programming model supports a
623-dimensional equidistributed property [2]. wide range of applications and parallel process
We are interested in Gaussian samples, topologies.
whose CDF is given by In Impulse C, the programming model em-

Zx phasizes the use of buered data streams as


1 t2 the primary method of communication be-
CDF (x) = √ e− 2 dt
2π tween independently synchronized processes,
−∞
which are implemented as persistent (rather
but there is no closed form its ICDF . Because than being repetitively called) C subroutines.
of that, approximations must be used. Here This buering of data, which is implementing
there is a concern with the accuracy and com- using FIFOs that are specied and congured
plex expressions are required to have good ap- by the application programmer, makes it pos-
proximations. However, these expressions re- sible to write parallel applications at a higher
quire too many oating-point operations and level of abstraction, without the clock cycle-
their implementations would severely restrict by-cycle synchronization that would otherwise
the number of Monte Carlo cores in the FPGA. be required .
Fortunately, there is another method for gen- Programming with Impulse C processes is
erating Gaussian samples from uniform sam- conceptually similar to programming with
ples, which is the Box-Muller transformation threads. As with thread programming, each
[3]. It requires less oating-point arithmetic Impulse C process has its own control ow, it
and its good quality has been proved [4]. is independently synchronized and it has ac-
The remainder of the paper is organized as cess to its own local memory resources (which
follows. Section 2 presents an overview of the will vary depending on the target platform).
Impulse C tool and its programing paradigm For this reason it is relatively easy to con-
model. In section 3, the Mersenne Twister im- vert applications written in threaded C (for
plementation is briey explained. The Box- example, using the Posix thread library) to
Muller transformation to generate Gaussian Impulse C. Thus, the coarse parallelism in Im-
samples from uniform ones is depicted in sec- pulse C is simply achieved by coding multiple
tion 4. The key point of the paper is presented concurrent processes. Synchronization among
in section 5, where the implementation of the these concurrent computational kernels is eas-
Asian options computation with Impulse C is ily achieved by the streams dataow [5].
discussed in detail. Results are provided in Finer levels of parallelism can be exploited

60
JCRA 2011 | Tenerife 7-9 de Septiembre

inside each process. Instruction parallelism is the tool that we want a matrix inferred this
automatically generated by the scheduler. Im- way. Instead, we declared each element of the
pulse C automatically generates and analyses matrix as a dierent 32-bit unsigned integer
the instruction dependence graph so that inde- variable and we generated the Impulse C code
pendent instructions are performed in parallel. with the help of a python script. However, the
In the case of loops, further level of parallelism area required for this implementation was not
can be achieved by means of precompiler direc- worth the eort and it is preferable to instanti-
tives or pragmas. They are loop unrolling and ate several Block RAM based Mersenne cores
loop pipelining, which are specied by placing if more throughput is required.
#pragma CO UNROLL and #pragma CO
PIPELINE just after the header of a loop.
4 Box-Muller

Uniform pseudo random generators have been


3 Mersenne Twister
widely studied since they are used to gen-

The Mersenne Twister is a high quality uni- erate whichever other distribution. Here we

form random number generator with a period use the Box-Muller transformation which pro-

of 2
19937
− 1 and a 623-dimensional equidis- duces two independent Gaussian samples from

tributed property [2]. The original C source two uniform ones. Let u1 and u2 be two sam-

code can be found in that reference and it is ples of the uniform distribution in (0, 1], then

very ecient for implementing in CPU, both √


in terms of memory and performance. A ma- z0 = −2 ln u1 cos(2πu2 )
trix of 624 32-bit integers is initialized in a

z1 = −2 ln u1 sin(2πu2 )
rst stage. After that, one value of the matrix
is returned with each call to genrand(), after are two independent Gaussian samples ∼
some bit manipulation process known as tem- N (0, 1).
pering. Once all the values in the matrix have The implementation of this with Impulse
been used, it is reconstructed by shuing and C is trivial in a pipelined process shunting
masking its bits. one sample per clock cycle. The only issue

This implementation is not HW friendly be- is the huge area required for the transcen-

cause it lacks a constant throughput. Instead, dental and trigonometric oating-point oper-

we have rewritten the algorithm so that once ators from the Altera Megafunctions [6], that

the value of the matrix is used, it is replaced limit the number of Monte Carlo cores that

by the new one. In fact, since the matrix is can be implemented in the FPGA. In order to

mapped to a Block RAM, which is limited up slightly reduce this area utilization, the iden-
2 2
to two ports, we need two dierent matrices to tity sin α + cos α = 1 is utilized, saving one

achieve a throughput of one sample per clock trigonometric evaluation.

cycle. After initialization, the matrix A takes


the read-only role. Its values are tempered 5 Asian Options
and returned as the uniform samples, one each
clock cycle. At the same time, the matrix B The Monte Carlo algorithm for pricing Asian
is lled with a new Mersenne Matrix. Once Options is depicted in Listing 1. For each sim-
all the values in the matrix A have been used, ulation path, the stock prices are updated by
the roles are interchanged so that B becomes using Equation (1) and accumulated in order
read-only. to compute the mean value until the maturity
We have also developed a Mersenne Twister time T. The payo is evaluated as the prot
core with a throughput of 623 samples per involved in the transaction. Again, the values
clock cycle, by implementing the Mersenne are accumulated in order to obtain the mean
matrix with registers. This is somehow tedious value. Finally, the price is adjusted by the
to do with Impulse C, as there is no way to tell xed interest rate.

61
Sesión II: FPGAs versus Multicores/GPUs

Listing 1: Monte Carlo algorithm for pricing Asian Options

1 payOffSum = 0 ;
2 for (i = 0; i < nSims ; i ++){
3 priceSum = S0 ;
4 for ( j = 0; j < nSteps ; j ++){
5 W = getGaussian ( ) ;
6

7 S = S ∗exp((r − v 2 /2)∆t + v ∗ ∆T W ) ;
8 p r i c e S u m += S ;
9 }
10 p a y O f f = max ( 0 , priceSum / ( n S t e p s +1) − K) ;
11 payOffSum += p a y O f f ;
12 }
13 price = exp(−r ∗ T )∗ payOffSum / nSims ;

Listing 2: Impulse C pseudo-code for the payO computation in a pipeline with rate 1

1 for (i = 0; i < n S t e p s ∗ nSims ; i ++){


2 #pragma CO PIPELINE
3 #pragma CO NONRECURSIVE l a s t S t o c k P r i c e
4 #pragma CO NONRECURSIVE l a s t S t o c k S u m
5
6 co_stream_read ( sGauss , &W, sizeof ( float ) ) ;
7
8 if ( initStage ( i ) ){
9 S = S0 ;
10 priceSum = S0 ;
11 } else { // A c u m u l a t i o n stage
12 S = l a s t S t o c k P r i c e [ i % PARALLEL_PATHS ] ;
13 p r i c e S u m = l a s t S t o c k S u m [ i % PARALLEL_PATHS ] ;
14 }
15 S = u p d a t e S t o c k (W, S) ;
16 p r i c e S u m += S ;
17 l a s t S t o c k S u m [ i % PARALLEL_PATHS ] = priceSum ;
18 l a s t S t o c k P r i c e [ i % PARALLEL_PATHS ] = S;
19
20 if ( outputStage ( i ) ) {
21 payOff = computePayOff ( priceSum , K) ;
22 co_stream_write ( sPayOff , &p a y O f f , sizeof ( float ) ) ;
23 }
24 }

62
JCRA 2011 | Tenerife 7-9 de Septiembre

In order to accelerate this algorithm with sitions of an array with a size BUFF_SIZE
Impulse C, loop pipelining must be used. greater or equal to the addition latency, as
This is trivially achieved by simply insert- shown in Listing 4. This way, the additions
ing #pragma CO PIPELINE after the head can be performed with rate 1 plus a negligi-
of the body. However, Impulse C does ble penalization to add the nal values stored
not allow pipeline nesting and the two loops in the array. As before, we must only ensure
should be attened into a single loop exe- that BUFF_SIZE is bigger than the pipeline
cuted nSim*nSteps iterations. However, there latency so that it is true that there is no depen-
is loop dependence between iterations which dence between all the stages in the pipeline.
prevents a pipeline with rate 1, i.e, a pipeline Therefore the extra time needed for adding
computing iterations every clock cycle. To the nSims values would be approximately of
avoid the loop dependence, we must take ad- nSims +la + BUFF_SIZE ·la ≈ nSims clock cy-
vantage of the independence of the stock prices cles, where la is the addition latency. However,
among dierent simulations, so that PARAL- the overall computation time of our Monte
LEL_PATHS (PP) simulations are concur- Carlo core is essentially of nSteps*nSims cy-
rently computed. cles, since there is overlapping between the

To this end we split the problem in two payO computation and the sum reduction.

dierent Impulse C processes. The rst one


computes the stock prices and performs the
6 Results
arithmetic mean. It also computes the payo,
which is written to the second processes. List- Thea area utilization of the implementation
ing 2 depicts the Impulse C pseudo-code work- discussed for a single computational kernel
ing at rate 1. There are two dierent arrays is shown in Table 1. These results are ob-
of PP elements which store the stock and the tained with Quartus II 10.1 SP1 after Place
addition until the i-th step, respectively. We and Route. The oating-point operators have
use the CO NONRECURSIVE pragma to tell been generated with the Megawizard Plug-in
Impulse C that there are no data dependences Manager from Altera, which are seamlessly in-
regarding the array access, so that waits are tegrated within Impulse C by editing some xml
not inserted. However, we must set PP big les. As it can be seen, the area bottleneck is
enough so that the previous assertion is actu- found in the Box-Muller component, because
ally true. The optimum value for PP would be of the huge area used by the trigonometric
the latency of the critical code in between the and logarithmic operators [6]. In the Stratix
read and the write from and to the memories. V 5SGSMB8, a total number of 25 computa-
As PP is going to be small and it does not af- tional Monte Carlo kernels are instantiated.
fect performance, it is easier to simply use the The outputs of these individual components
total routine latency (85) as the lower bound, are averaged by a collector Impulse C process
since it is automatically reported by Impulse which then performs the interest rate update
C. Therefore, with the rate 1 pipeline, all the in the price of the underlying asset.
payOs are computed after nSteps*nSims plus The performance is depicted in Table 2. The
the pipeline latency, which is despicable. CPU code is executed on Ubuntu 10.10 64 bit
Each of these computed payos must be and the source is compiled with gcc 4.4.5 us-
added, that is the function of the second Im- ing the optimization ags -O3 and -ast-math.
pulse C processes. A naive implementation The hardware consists of an Intel i7 860 CPU
would be the one in Listing 3. Here again which runs at 2.8 GHz and it has 8 MB of
there is the problem of loop dependence and cache. The number of time steps, nSteps, is
the pipeline can only perform at a rate equal to set to 3650 and the number of independent
7
the latency of the addition operator. A simple path simulations, nSims, is 10 . The FPGA
trick can be used to avoid this inconvenient. times are obtained by simulation but the per-
The accumulation is performed in dierent po- formance in a real system will not suer from

63
Sesión II: FPGAs versus Multicores/GPUs

Listing 3: Impulse C pseudo-code for the payO accumulation in a pipeline with a rate equal to
the latency of the addition operation (7 cycles for the lowest latency Altera Megafunction)

1 payOffSum = 0 ;
2 for (i = 0; i < nSims ; i ++){
3 #pragma CO PIPELINE
4
5 co_stream_read ( s P a y o f f I n , &p a y O f f , sizeof ( float ) ) ;
6 payOffSum += p a y O f f ;
7
8 }

Listing 4: Impulse C pseudo-code for the payO accumulation in a pipeline with rate 1

1 payOffSum = 0 ;
2 for (i = 0; i < nSims ; i ++){
3 #pragma CO PIPELINE
4 #pragma CO NONRECURSIVE s u m s B u f f e r
5
6 co_stream_read ( s P a y o f f I n , &p a y O f f , sizeof ( float ) ) ;
7
8 if ( initStage ( i ) )
9 payOffSum = 0 ;
10 } else {
11 payOffSum = s u m s B u f f e r [ i % BUFF_SIZE ] ;
12 }
13
14 payOffSum += p a y O f f ;
15 s u m s B u f f e r [ i % BUFF_SIZE ] = payOffSum ;
16 }
17
18 // F i n a l addition
19 payOffSum = 0 ;
20 for (i = 0; i < BUFF_SIZE ; i ++){
21 payOffSum += s u m s B u f f e r [ i ] ;
22 }

Table 1: Area utilization for Stratix 5SGSMB8I3F45C3

Mersenne Box-Muller PayOs SumPayos Available

LUTS 592 7088 3213 1416 532880


Registers 466 7764 7020 933 1065760
DSP 2 16 21 0 1755
Mem bits 39936 36 3388 392 35942400

64
JCRA 2011 | Tenerife 7-9 de Septiembre

Table 2: Execution time comparison between CPU and FPGA

CPU (1 core) CPU (2 cores) CPU (4 cores) FPGA (25 cores) Speed-up

Time(s) 3232.60 1735.83 955.63 11.24 85.02

communications, as data transfer time will be References


negligible compared to computation time. The
Stratix V 5SGSMB8 is not fully supported yet, [1] Impulse Acelerated Technologies. Impulse

and the timing analysis may not be accurate. C. [Link]

The tool reports a maximum frequency of 130


[2] Makoto Matsumoto and Takuji Nishimura.
MHz, which leads to a total computation time
Mersenne twister: a 623-dimensionally
of 11.24 s. Comparing to the multi-core imple-
equidistributed uniform pseudo-random
mentation, the recongurable implementation
number generator. ACM Trans. Model.
runs 85 times faster.
Comput. Simul., 8:330, January 1998.

[3] G.E.P. Box and M.E. Muller. A note


on the generation of random normal devi-
ates. The Annals of Mathematical Statis-
7 Conclusions tics, 29(2):610611, 1958.

[4] Giray Okten and Ahmet Goncu. Gener-

We have implemented a Monte Carlo method ating low-discrepancy sequences from the

for pricing Asian Options in FPGAs using normal distribution: Box-muller or inverse

oating-point arithmetic and Impulse C. With transform? Mathematical and Computer


some tricks in the C code, and by exploiting Modelling, 53(5-6):1268  1281, 2011.
path independence, we achieved pipelines with
[5] D. Pellerin and S. Thibault. Practical
rate one both in the pseudo-random genera-
FPGA programming in C. Prentice Hall
tor (Mersenne + BoxMuller) and in the Asian
Press Upper Saddle River, NJ, USA, 2005.
option pricing computation. By instantiating
25 Monte Carlo cores we have shown a speed- [6] Altera. Floating-Point Megafunctions
up improvement of 85 times over a multicore User Guide. [Link]
CPU implementation, with a very short devel- literature/ug/ug_altfp_mfug.pdf.
opment time.

65
JCRA 2011 | Tenerife 7-9 de Septiembre

Acceleration of Electron Microscopy Applications with


GPGPUs and FPGAs
Alessandro Deideri (1), Gabriel Caarena (2)
Juan A. Lopez (3), Carlos O. S. Sorzano (2,4)
adeideri@[Link], [Link]arenafernandez@[Link], juanant@[Link], coss@[Link]
(1) Politecnico di Torino, Turin, Italy
(2) Depto. Ing. Sistema de Información y Telecomunicación, Universidad CEU San Pablo, Madrid
(3) Depto. Ingenieria Electronica, Universidad Politecnica de Madrid
(4) Centro Nacional de Biotecnología, Centro Superior de Investigaciones Cientícas

Abstract ical situations. The 3D models are extracted


by processing hundreds of images generated
In this paper, some preliminary results on the by an electron microscope and the process is
hardware acceleration of Electron Microscopy divided into two stages: alignment and 3D re-
applications are presented. In particular the construction.
acceleration of ane transformations using
This techniques require the use of power-
GPGPUs and FPGAs is tackled, since they are
ful computing systems such as computer clus-
extensively used in applications such as Single-
ters. Clusters enable the parallelization of ap-
Particle Analysis and Electron Tomography.
plications, but they have power consumption
Several GPGPU implementations are pre-
and heating issues, as well a high maintenance
sented as well as an FPGA design. The
cost. Heterogeneous architectures provide a
GPGPU produces accelerations up to ×120 solution to the scaling problems of clusters
while the FPGA is estimated to provide
[3]. The CPU coexists with massively par-
speedups of ×28. The impact on the bus bot-
allel hardware that takes on the majority of
tleneck is analyzed.
the processing, leading to high-performance
The results show that it is important to and low-power systems. As a drawback,
accelerate the maximum number of software the development times are superior to those
functions as possible in order to make the most of parallel software programming. Massive
of the hardware accelerators. Also, a discus- parallelization can be achieved by means of
sion of the suitability of each acceleration tech- FPGA ([Link] Gate Array) [4]
nology to the problem under study is provided. and GPGPU (General Purpose Graphics Pro-
cessing Unit) [5] technologies.

1 Introduction In this paper we present the preliminary re-


sults on the acceleration of SPA and ET. As
Electron Microscopy is an essential tool in a rst step, we addressed the acceleration of
modern biology since it enables the determi- ane transformation (rotations and transla-
nation of the 3D structure of macromolecules tion of images) using GPGPUs. The ultimate
(i.e. Single-Particle Analysis  SPA [1]) and goal of this research project is to produce an
macromolecules complexes (Electron Tomog- accelerated cluster boosted by the use of both
raphy  ET [2]). They facilitate the study of GPGPUs and FPGAs. The computation will
the molecular mechanisms involved in the nor- be performed on GPGPUs and FPGAs mak-
mal behaviour of cells as well as in patholog- ing the most of each technology as required.

67
Sesión II: FPGAs versus Multicores/GPUs

structed. A typical data set is composed of


150 images of 512x512 pixels.
Classification The amount of execution time devoted to
Rotation+Shifting
ane transformations is 29% for SPA and 49%
for ET using standard settings for both appli-
10000 64x64-pixel images
3D
cations. Hence our decision of selecting rota-
tion and shifting as the rst function to be
accelerated.
In this project, we aim at accelerating SPA
and ET applications within the sofwtare pack-
3D Reconstruction
age XMIPP, developed at the Spanish Center
of Scientic Research (CSIC) [6]. XMIPP is
Figure 1: Single-particle analysis of protein.
an european reference for electron microsopy
analysis and it is widely use around many sci-
entic laboratories around Europe.
The contributions of the paper are:
3 Hardware acceleration
• Acceleration of ane transformation by
means of GPGPUs and estimation of 3.1 GPGPU-based acceleration
FPGA accelerator. GPGPUs enable the massive parallelization of
• Analysis of the impact of bus transfer on algorithms and they reach speedups ranging
the speedup. from x10 to x300 [5] keeping a low power con-
sumption [3]. Internally, they are formed of
hundreds of processor cores that work in par-
2 Electron Microscopy allel, executing the same task (kernel ). They
have been welcomed by the scientic commu-
SPA is used to study macromolecules and nity due to their low cost, their relatively pro-
macromolecular assemblies (e.g., proteins, ri- gramming simplicity and their suitability for
bosomes, etc) [1]. The data provided by the oating-point computations  widely adopted
electron microscope consist of 2D projections in scientic computation. They have been
of the same object with dierent orientations. applied to many disciplines, being well ac-
First, it is necessary to cluster the images in cepted among bioengineering research projects
sets of similar oriented samples. This clus- [5]. Currently, the most popular GPGPUs are
tering technique implies massive rotation and connected to the PC by means of a PCIe con-
shifting. These sets are averaged to reduce nection, opening the door to low cost high-
the noise inherent to microscope imaging. The performance computing. Basically, they are
next step is that of 3D reconstruction that ex- tuned for executing the same task using a huge
tracts the 3D structure of the object from the volume of data. If we move apart from this
2D projections. A typical SPA requires around situation (data dependency, conditional ows,
10.000 images of 64x64 pixels (see Fig. 1). etc.) they do not provide perceptible perfor-
ET aims at the study of systems such as mance gains. C-like programming language,
cells, cell portions or tissues, and cell or- such CUDA [7], can be used. They provide
ganelles (i.e. mitochondria) [2]. Again, the fast compilation and easy integration with tra-
data is composed of many 2D projections of ditional programs executed by the CPU.
the same specimen, but now, the object is ro- The programming model of CUDA is in-
tated as pleasure around an axis perpendicular tended for encapsulating the inner hardware
to the electron beam or around two or more tilt details of the GPGPU to the programmer, in
axes. The images must be rst aligned (using order to ease the development process, as well
again rotations and shifts) and then, recon- as to facilitate portability to dierent GPGPU

68
JCRA 2011 | Tenerife 7-9 de Septiembre

devices. The GPGPU is composed of several access memory.


streaming processors (SP) that possess sev- Finally, it is also worth mentioning the
eral cores that can work in parallel. As pre- oating-point capabilities of these devices.
viously mentioned, the GPGPU execute the
same piece of code (kernel) in parallel using 3.2 FPGA-based acceleration
dierent data sets. A thread is a particular
execution of the kernel. Each SP handles in FPGAs present features that are in the mid-
parallel a set of threads that is grouped to- dle of those of microprocessor and application-
gether in warps. The execution of the threads specic integrated circuits (ASICs) in terms
in a warp is parallel as long as there are no of performance and design exibility. On one
conditional branches. If there are dierent ex- hand, they achieve a high computing perfor-
ecution paths, the SP executes in parallel all mance, since, alike ASICs, they enable opti-
threads that points at the same instruction. mizing the architecture for a specic applica-
This implies, that the SP must rst cluster all tion. On the other hand, they allow the recon-
threads that are in the same execution point, guration of its functionality, as it is possible
then, execute sequentially each cluster. Thus, in microprocessor-based systems. Internally,
the presence of conditional branches can dete- they consist of a myriad of congurable blocks
riorate performance considerably. for processing and storage, blocks for specic
The programmer have some control on the processing (DSP) and storage, as well as pro-
way that threads work in parallel. Threads are grammable interconnection matrices. Summa-
grouped in blocks using a 1D, 2D, or 3D mesh. rizing, they oer a high architectural exibil-
As a result, each thread has a 3-dimension ity with a high level of parallelism. Hence, the
identier. During scheduling, each block is as- possibility of generate highly optimized com-
signed to an SP, and the SP starts the execu- puting architectures for specic algorithms.
tion of all of its threads (by means of warps). FPGA design methodologies dier consid-
In a similar fashion, blocks are distributed in erably to software-oriented ones, since the de-
a 1D/2D mesh, called a grid, so the block also veloper is not only programming for a given
have an identier, and this identier is visible architecture: the architecture must be gener-
to the threads belonging to the block. Basi- ated. The main drawback they present is the
cally, each thread can use the block and thread long development time. However, for some ap-
IDs to generate the memory location of the plications the results can be staggering, being
data set that have to process or to output. possible to achieve speedups of up to x3000
[8, 4]. Another important issue is power con-
Regarding memory, all threads can access sumption. The power consumption of FPGAs
global memory (DRAM), all threads within
is a couple of orders of magnitude below other
a block access shared memory (SRAM), and technologies [3].
eventually, each individual thread accesses a
set of local registers. The key point here is
that global memory has a high capacity (i.e. 4 Rotation and translation of im-
1-6 GB) but it is slow, while shared memory ages
has a small capacity (i.e. 16-48 KB) but it
is fast (a couple of orders of magnitude faster The rotation is depicted in Fig. 2. Images are
than global memory). Global memory must be represented as a grid, with the pixels located
accessed coalescedly, since the read and write at the intersections between lines. The rotated
operations work with several consecutive bytes image is generated by rotating the original grid
(32, 64, 128, etc.), otherwise, there are pro- an angle α. Thus, each pixel of the rotated
hibitive delays. Local memory can be accessed grid can be positioned into the grid of the orig-
randomly. We will see in the next subsection inal image. The value associated to the new
the impact of using global and local memory rotated pixel is computed by selecting the four
and also the impact of using dierent ways to closest pixels from the original image and av-

69
Sesión II: FPGAs versus Multicores/GPUs

Algorithm 1: Rotation and translation of images


Rotated image Input: Set of original images I
Set of angles A
Set of shifts S
Output: Set of transformed images R
foreach r ∈ R do
i = image associated to r
irOginal
image
βr = −αr
∆x = −srx
∆y = −sry

foreach Pixel pr
(with coordinates (xr , yr )) do
xi = xr cos(βr ) + xy sin(βr ) + ∆x
Figure 2: Rotation of an image. yi = xr sin(βr ) − xy cos(βr ) + ∆y
if (xi , yi ) is inside i then
Get 4 neighbors  p1 , p2 , p3 , p4
eraging their values using the distance to the Compute distance to pr
position of the rotated pixel. The procedure d x k = x r − xp k
for rotation and translation is in algorithm 4. dyk = yr − ypk )
Summarizing, the transformation of images r(xr , yr ) =
4
requires: i) the computation of the equivalent d · dyk · i(xpk , ypk )
k=1 xk
coordinates of the transformed image onto the else
original image grid; and, ii) the averaging of r(xr , yr ) = 0
the values of the four closest pixels from the end
original image. end
end

5 Implementations
5.1 GPGPU
The GPGPU implementations are shown in
We use CUDA to program a parallel version table 1. In RA each block deals with the ro-
of the ane transformation using a TESLA tation of an image, so there are 10000 active
C1060 card from NVidia. We selected single- blocks for SPA and 150 active blocks for ET.
precision arithmetic operations. The GPGPU Each thread computes the rotation of a col-
chosen has 64K blocks, a maximum of 512 umn (64 columns for SPA and 512 columns
threads per block, 4GB of global memory, for ET). There is no need to use more threads,
16KB of shared memory per block and a since the parallelization is determined by the
wrap size of 32. warp size of 32. Having Fig. 2 in mind, it is
In algorithm 4, it is shown that for each clear that the reading of the neighbors cannot
pixel in the transformed image, it is necessary be coalesced, unless α = 0. Implementations
to read four pixels from the original image and RB1 and RB2 process the image in tiles, thus,
to write the new pixel itself. We will see the promoting the use of the fast shared mem-
impact of this below. We develop four dierent ory and the coalesced access to global mem-
implementations that were tested under two ory. Again, each block deals with a dierent
dierent scenarios: image, but now each tile is rst moved coa-
lescedly to shared memory, then, rotated us-
• SP A: 10.000 64x64 images ing only shared memory, and the rotated tile
is saved onto DRAM coalescedly. In RB1 the
• ET : 150 512x512 images rotated image is divided into 8x8-pixel tiles.

70
JCRA 2011 | Tenerife 7-9 de Septiembre

Rotated image
DRAM1

FPGA
odd images even images

irOginal RAM
RAM11 RAM
RAM22
image
p1,p2,p3,p4

PIPELINE1 PIPELINE2
PIPELINE1 PIPELINE2

Figure 3: Rotation using 4x4-pixel tiles.


DRAM2

In order to promote coalesced reading from


memory, the rectangle containing the com-
Figure 4: Proposed FPGA-based accelerator.
plete rotated tile is read from global memory
(see g. 3 for an example with 4x4-pixel tiles).
and 512 columns for ET). Now, the reading of
It can be seen that some pixels are read but
the neighbors is coalesced, as well as the trans-
never used. The size of the rectangle is set
o formed image writing. Implementation SHA2
to the worst-case scenario (α = ±45 ), read-
 √  2 is the counterpart of SHA2 , instead of reading
ing 8 2 +1 pixels. As a consequence, the four neighbors for each pixel of the shifted
it might be possible that more than 50% of image, we read one pixel from the original im-
the read data is not used during processing, age and the contributions to its four neighbors
so the reading for global memory is not com- in the shifted image are added. coalesced ac-
pletely ecient, but it is much better than do- cess is also guaranteed for both read and writ-
ing a non-coalesced read. Regarding threads, ing from DRAM. Implementations SHB1 and
144 threads are used during the global mem- SHB2 process the image in tiles and make use
ory reading stage, and 64 are active during the of shared memory. SHB1 shift 16 × 16-pixel
rotation. R B2 also exploits the idea of tiling, tiles reading from DRAM 17 × 17-pixel rect-
but the tile size is increased to 16 × 16 pixels. angles. This is much more ecient than the
Now, due to the limitation of 512 threads per rotation counterpart. SHB1 shifts blocks of
block, it is not possible to use the required 576 64 × 7 512 × 7 for ET.
 √  2 for SPA, and
threads for reading ( 16 2 + 1 = (24)2 ).
A solution to this problem is to have 16 × 24
5.2 FPGA
threads. During the reading stage, data is read
in two stages: rst, 16 × 24 threads read one We performed an estimation of the needed re-
pixel; second, only 8 × 24 threads read from sources and the performance that could be
DRAM to fetch the remaining data. During reached using an FPGA-based acceleration
the rotation, 256 (16 × 16) threads work in board. We focused on GiDEL's PROCStar
parallel. III,a PCIe-based board with an ALTERA
Regarding the translation, the computation Stratix III 80E-340L. The architecture is pre-
is much simpler than the rotation. In SHA1 sented in Fig. 4 and the processing ow in
each block deals with the translation of an im- Fig. 5. The board enables the use of two ex-
age (10000 active blocks for SPA and 150 ac- ternal DDR3 DRAM of 256 MB. Internally,
tive blocks for ET). Each thread computes the the FPGA implements two custom memories
translation of a column (64 columns for SPA that sort the data in blocks of four neighbors,

71
Sesión II: FPGAs versus Multicores/GPUs

Table 1: GPGPU implementations.


Name Block Thread Comments
ROTA 1 image/block 1 column/thread · No collaescent reads from DRAM
· Collaescent write to DRAM
Rotation

ROTB1 · 1 image/thread 1 pixel of tile/thread ·8 × 8-pixel tiles


· Image divided in tiles ·12 × 12 = 144 threads
144 read from DRAM
64 rotates and save to DRAM
ROTB2 · 1 image/thread 1 pixel of tile/thread ·16 × 16-pixel tiles
· Image divided in tiles ·16 × 24 = 384 threads
384+192 read from DRAM
256 rotate and save to DRAM
SHA1 1 image/block 1 column/thread · coalesced read and write to DRAM
Translation

SHA2 1 image/block 1 column/thread · coalesced read and write to DRAM


· 1 read, 4 writing
SHB1 · 1 image/thread 1 pixel of tile/thread ·16 × 16-pixel tiles
· Image divided in tiles ·17 × 17 = 286 threads
286 read from DRAM
256 rotate and save to DRAM
SHB2 · 1 image/thread 1 pixel of tile/thread ·64 × 7-pixel tiles for SPA
· Image divided in tiles ·512 × 7-pixel tiles for ET
64/512 read from DRAM
64/512 translate and save to
DRAM

a pipeline fashion. The rst output datum is


available after an initial latency, due to the
Image1 pipeline, and after that, output data is deliv-
ered each clock cycle and stored onto DRAM2 .
DRAM1ÆRAM1

It is not possible to read the following image


Latency until the last needed data from RAM1 is ex-
tracted, unless we duplicate the custom local
memory and the pipeline. It can be clearly
Image1 Image2
Time

RAM1ÆPIPE1 DRAM1ÆRAM2
Image’1
PIPE1ÆDRAM2 seen in Fig. 5, that it is possible to have a
constant access to both DRAM1 and DRAM2 ,
Image2
Latency
thus, maximizing throughput.
The total amount of data that needs to be
Image3
DRAM1ÆRAM1 RAM2ÆPIPE2
Image’2
...
... PIPE2ÆDRAM2
stored for both SPA and ET is approximately
...
163 MB if single-precision oating point is
Pipeline 1 Pipeline 2 used. Therefore, the DRAM capacity of the
board is ne. The FPGA have an embedded
memory capacity of 972KB for M9K blocks
Figure 5: Processing ow for FPGAs.
and 864KB for M144K blocks. A 64 × 64-pixel
image require 16KB, so the device can hold
the two local memories required. However, for
SPA the memory needed for a 512 × 512-pixel
so it is possible to read the required 4 data image is 1MB, more than the available embed-
at a time. The processing ow shows that it ded memory. For this study we will assume
is possible to overlap processing with memory that there is enough memory to implement the
reading and writing. First, the original image two local memories.
must be stored into local FPGA memory (i.e. Regarding arithmetic resources, we com-
RAM1 ). Then, the processing is performed in puted a lower bound on the resources

72
JCRA 2011 | Tenerife 7-9 de Septiembre

waste using actual synthesis data of single-


precision oating-point multipliers, adders Table 2: Performance results.
and a CORDIC core (Quartus 9.1). A 12.5% Rotation GPGPU Translation GPGPU FPGA
of the available embedded multipliers and a RA RB1 RB2 SA1 SA2 SB1 SB2 -
5% of LEs are required, suggesting that after

ET SPA
including control logic there will be plenty of ×32 ×37 ×64 ×120 ×74 ×86 ×32 ×28

resources left. This situation is advantegous, ×28 ×35 ×59 ×64 ×30 ×89 ×105 ×28
since it could be desireable to implement more SPA ≡ 104 64 × 64 images; ET ≡ 150 512 × 512 images
processing blocks that can work in parallel.
The performance results are in the next
subsection and they are based on actual 80

measurements of the throughput of data 70

transfers between main memory to FPGA 60

DRAM (≈ 1GBps) and also between the 50 GPGPU 64x64

board DRAM and the FPGA (≈ .225 MBps).

Speedup
GPGPU 512x512
40 FPGA 64x64

The FPGA clock frequency was set to 200


FPGA 512x512

30

MHz, since the arithmetic operators and the 20

DRAM controller work properly at this fre- 10

quency. 0
1 80 160 240 320 400 480
Iterations

6 Results
The speedup obtained by the dierent im- Figure 6: Impact of I/O bottleneck.
plementations are shown in Table 2. Note,
that the FPGA implementation presents only
a single implementation (F P GA), since its erated application, we carried out an estima-
throughput does not depend on the trans- tion of the speedup that could be obtained if
formation applied (i.e. rotation or transla- the data transfer time is included and the pro-
tion). The speedup is computed compar- cessing is repeated several times before send-
ing a software implementation of the rota- ing the data back to PC main memory. The
tion/translation to the processing time of the estimation is shown in Fig. 6, where the esti-
GPGPU and FPGA without considering data mated speedup vs. the number of iterations is
transfer from the PC to the boards. The soft- displayed. It is clear that a single iteration
ware version was run on a a single core of presents a very poor performance, specially
an Intel Core2 Quad at 2.66 GHz. Regard- for the GPGPU. This is due to the fact that
ing rotations, the speedup of GPGPUs ranges the PCIe data rate is very low for the selected
from ×28 to ×64. The implementations us- GPGPU (≈ 1.5 Gbps). As long as the number
ing shared memory produce the best results. of iterations increases, the speedup converges
The FPGA speedup is of ×28. The transla- to a maximum value. This shows that: i) it is
tion operation produces more heterogeneous misleading to use the speedup without consid-
results, since the access to global memory is ering the I/O bottleneck; and, ii) in order to
now much more ecient. This leads to ex- make the most of a hardware accelerator, it is
treme behaviors, where SPA performs the best necessary to parallelize the whole algorithm.
without using shared memory (SA ) and ET
1 Let us now compare the performance of
performs the best using it (SB ). The speedup
2 GPGPU and FPGA. The GPGPU clearly out-
ranges from ×30 to ×120. The FPGA imple- performs the FPGA for the presented experi-
mentation shows a speedup of ×28. ments. It is also cheaper and the development
In order to present more realistic results and time is much reduced. Moreover, it is easy
to emulate the behavior of a completely accel- to change the functionality by reprogramming

73
Sesión II: FPGAs versus Multicores/GPUs

dynamically the kernel. This change of func- University CEU San Pablo) and FastCFD
tionality is hard to do on an FPGA. The best (Universidad Politécnica de Madrid). We
option would be to have the whole set of algo- thank Nvidia Corp. and Altera Corp. for their
rithms implemented on the device so a high- support to the project.
end device is required. Reconguration might
not be fast enough to be used to change the References
functionality of the device. Finally, an obvious
handicap of FPGA board is the communica- [1] C. Sorzano, J. Bilbao-Castro, Y. Shkol-
tion speed between the FPGA and the exter- nisky, M. Alcorlo, R. Melero, G. Caarena,
nal DRAM. M. Li, G. Xu, R. Marabini, and J. Carazo,
However, it would not be fair to determine A clustering approach to multireference
at this early stage in the research which tech- alignment of single-particle projections in
nology suits the best to implement electron electron microscopy, Journal of Structural
microscopy applications. For instance, power Biology, vol. 171, no. 2, pp. 197  206, 2010.
consumption of the FPGA is at least one or-
der of magnitude lower than that of GPGPUs. [2] C. Sorzano, C. Messaoudi, M. Eibauer,
Also, the limitation of executing the very same J. Bilbao-Castro, R. Hegerl, S. Nickell,
kernel in all parallel processors is not present S. Marco, and J. Carazo, Marker-free im-
in FPGAs. It must be further investigated age registration of electron tomography
the possibilities of chaining dierent process- tilt-series, BMC Bioinformatics, vol. 10,
ing blocks before sending them back the im- no. 1, p. 124, 2009.
ages to the external DRAM (i.e. FFT, corre-
lation, correntropy, etc.). These aspects are to [3] A. Brodtkorb, C. Dyken, T. Hagen,
be studied in the near future. J. Hjelmervik, and O. Storaasli, State-
of-the-Art in heterogeneous computing,
ACM Trans. Des. Autom. Electron. Syst.,
7 Conclusions vol. 18, no. 1, pp. 133, 2010.
Preliminary results on the acceleration of elec- [4] T. El-Ghazawi, E. El-Araby, M. Huang,
tron microscopy applications are presented. In K. Gaj, V. Kindratenko, and D. Buell,
particular, the acceleration of ane transfor- The promise of high-performance recon-
mations by means of FPGAs and GPGPUs is gurable computing, Computer, vol. 41,
addressed and accelerations of up to ×120 for no. 2, pp. 69 76, 2008.
GPGPUs and ×28 for FPGAs are reported.
Several GPGPU implementations are pre- [5] J. Nickolls and W. Dally, The gpu com-
sented and the speedup obtained under dif- puting era, Micro, IEEE, vol. 30, no. 2,
ferent scenarios  including the eect of the pp. 56 69, 2010.
data transfer throughput  is reported and
analyzed. Some preliminary conclusions are [6] Centro Nacional de Biotecnología.
drawn about the use of GPGPUs and FPGAs [Link]
as accelerators. bin/view/Xmipp/WebHome.
Future work includes the acceleration of the [7] Nvidia Corp., NVIDIA CUDA reference
dierent functions involved in SPA and ET. manual 2.0, 2008.
Also, alternatives architecture for FPGA will
be studied (i.e. tiling, etc.). [8] G. Caarena, C. Pedreira, C. Carreras,
S. Bojanic, and O. Nieto-Taladriz, FPGA
Acknowledgment Acceleration for DNA Sequence Align-
ment, J. of Circuits and Systems, vol. 16,
This work was supported by research projects pp. 245266, apr 2007.
USP-BS PPC05/2010 (Banco Santander and

74
JCRA 2011 | Tenerife 7-9 de Septiembre

SESIÓN III:
ARITMÉTICA COMPUTACIONAL

Bidiagonalización de matrices con el core Linear Algebra Toolkit ............................................. 77

Inversión rápida en cuerpos GF(2^m) mediante matrices de exponenciación precalculadas....... 85

Arquitectura concurrente diseñada en XSG para el cálculo de autovalores y autovectores en


FPGAs.......................................................................................................................................... 93

Computación acelerada en FPGA para la simulación de absorción de partículas...................... 101

75
76
JCRA 2011 | Tenerife 7-9 de Septiembre

Bidiagonalización de matrices con el core Linear Algebra


Toolkit

Eduardo Magdaleno(1), Manuel Rodríguez(1), Fernando Pérez(2), Sergio Fumero(2)


emagcas@[Link], mrvalido@[Link], fdoperez@[Link], [Link]@[Link]
(1)
Dpto. de Física Fundamental y Experimental, Electrónica y Sistemas, Universidad de La Laguna.
(2)
Dpto. de Estadística, Investigación Operativa y Computación, Universidad de La Laguna.

Resumen a una alineación ideal. Para ello se emplea un


láser verde que genera un punto en la escena. La
En este trabajo se presenta la implementación posición del punto en la imagen de cada una de las
hardware sobre FPGAs de las familias Virtex-6 y ocho cámaras queda grabada para un total de 500
Virtex-7 del algoritmo de bidiagonalización de imágenes o posiciones distintas dentro de la
matrices basado en las rotaciones de Givens. Este escena (figura 2). Con estas coordenadas se
cómputo constituye la primera fase de la realiza la calibración.
descomposición en valores singulares (SVD) de la
matriz, que, a su vez, es la parte fundamental de la
fase de calibración de un array de cámaras basado
en la geometría epipolar.

1. Introducción

Durante las últimas décadas, la descomposición en


valores singulares (SVD) se ha empleado en
diferentes campos de la ingeniería y la ciencia,
tales como en procesado de señal [1],
bioinformática [2], robótica, optimización y
control [3]. Esto ha hecho que se hayan buscado
métodos y tecnologías que aceleren y optimicen el Figura 1. Fotografía del array de cámaras
cálculo de esta operación.
El cálculo de SVD puede optimizarse usando
las tecnologías basadas en FPGA que permiten un En [5] muestran la calibración de 16 cámaras
alto grado de flexibilidad y paralelismo con un en un tiempo aproximado de 30 minutos
tiempo de desarrollo y coste relativamente bajos. empleando MATLAB. Nuestro objetivo es
Además, a partir de la versión 13 del entorno de realizar una calibración hardware en FPGA que
desarrollo ISE Design Suite de Xilinx, se disminuya drásticamente este tiempo de
suministra un core que permite realizar calibración.
operaciones matriciales rápida y fácilmente, sólo El resto del trabajo se organiza como sigue: en
disponible para FPGAs de las familias Virtex-6 y la sección 2 se describe el marco matemático-
Virtex-7 [4]. teórico de la calibración y la bidiagonalización de
En nuestro caso, se pretende calibrar un array las matrices de calibración empleando las
lineal de cámaras de Sony para PlayStation. El rotaciones de Givens. Entonces, en la sección 3 se
array consta de 8 cámaras enganchadas a un describe el diseño de la arquitectura de la
soporte de metacrilato como se muestra en la implementación hardware en FPGA. En la sección
figura 1. La alineación realizada de esta manera 4 se muestran los recursos usados, las
no resulta satisfactoria y debe corregirse las simulaciones y la comparativa de la
inclinaciones y rotaciones de las cámaras respecto implementación respecto a la de Matlab.

77
Sesión III: Aritmética Computacional

Finalmente se muestran las conclusiones en el 2.1. La descomposición en valores singulares


último apartado.
La parte central del algoritmo de calibración
2. Marco teórico consiste en hacer la SVD sobre una matriz que
contiene las coordenadas de los 8 puntos en las
En nuestro caso, la calibración considera 8 dos cámaras que se tienen en consideración en esa
cámaras y 500 puntos Xj=[Xj, Yj, Zj, 1]T, con iteración.
j=1,…,500. Los puntos tridimensionales Xj son Para identificar todas las operaciones
proyectados a puntos bidimensionales uij en la aritméticas requeridas, se describe brevemente el
imagen de cada cámara según la transformación proceso de cálculo de la SVD.
La SVD de una matriz A de tamaño M x N se
define como [7]
u ij 
  A  UV H
ij  v ij   ij u ij  P i X j , ij    donde U y V son matrices unitarias de
dimensiones M x M y N x N respectivamente. La
1
  matriz ∑ contiene los valores singulares en su
donde cada Pi es una matriz de 3x4 que contiene diagonal principal
11 parámetros de la cámara, y (u,v) son las diag ()  { 1 ,  2 ,   r }, r  min{N , M }
coordenadas del píxel de la cámara (figura 2). Hay con  1   2     r
6 parámetros que describen la posición y la
El cómputo SVD considerado se basa en el
orientación de la cámara y otros 5 parámetros que
algoritmo de Golub-Kahan descrito en [8] y
describen las propiedades intrínsecas de la cámara
consta de dos fases: bidiagonalización y
[6]. El objetivo de la calibración consiste en
diagonalización.
estimar los factores de escala ij y las matrices de
proyección de las cámaras Pi. 2.2. Bidiagonalización
El algoritmo de calibración consiste en
calcular los parámetros empleando 8 puntos En la bidiagonalización, se inicializan tres
aleatorios (de los 500 disponibles) de dos de las memorias con los datos de IM, A e IL donde IM e IL
ocho cámaras del array. Este proceso se repite inicialmente son matrices identidad de MxM y
iterativamente para realizar el ajuste cogiendo la LxL respectivamente.
mayor cantidad de puntos posible y teniendo en
cuenta las ocho cámaras.

Xj-1
Xj Xj+1
Xj+2

u1j P1 u2j u6j P6 u7j P7 u8j P8


P2 u3j P3 u4j P4 u5j P5

C8
C1 C6 C7
C2 C3
C4 C5

Figura 2. Calibración de un sistema multicámara compuesto por un array de 8 cámaras

78
JCRA 2011 | Tenerife 7-9 de Septiembre

u=A(:,k)
Durante la fase de bidiagonalización, las sigma=norma(u)
rotaciones de Givens se aplican a la matriz A tanto u(k)=u(k)+sigma
rho=1/sigma·u(k)
a la izquierda como a la derecha. v= rho·u’A
Las mismas rotaciones se realizan sobre las A=A-uv
matrices IL e IR. De esta manera se obtiene la 2
Givensizq=I-2sigma uu’
matriz bidiagonal llamada B0 en la memoria U0=U0Givensizq
donde se almacenaba la matriz de partida A. Las
matrices unitarias resultantes tras las rotaciones %Introduce ceros derecha
U0 y V0 se almacenas en las memorias de IL e IR, %superdiagonal (fila k)
u=A(k,:)
donde debe cumplirse que A=U0B0V0. sigma=norma(u)
En la figura 3 se muestra el proceso de u(k)=u(k)+sigma
bidiagonalización de una matriz de 8x9 elementos. rho=1/sigma·u(k)
Se precisan 7 iteraciones (el mínimo de M ó N v= rho·Au’
menos 1) para realizar el cómputo, donde en cada A=A-vu
iteración se realiza una rotación a la izquierda y Givensder=I-2sigma2u’u
V0=GivensderV0
una rotación a la derecha. El pseudocódigo para
actualizar cada una de las memorias se muestra a end
continuación:
Algoritmo 1. Algoritmo de bidiagonalización
U0=IL, V0=IR
for k=1:min(L,M)-1
%Introduce ceros bajo la
%diagonal (columna k)

izq der izq der


A=    
It. 1 It. 1 It. 2 It. 2

izq der izq der


   
It. 3 It. 3 It. 4 It. 4

izq der izq der


   
It. 5 It. 5 It. 6 It. 6

izq der
  =B0
It. 7 It. 7

Figura 3. Bidiagonalización de una matriz de 8x9

79
Sesión III: Aritmética Computacional

 La precisión de los datos de los operandos y


3. Implementación hardware del de la matriz resultante (A_WIDTH,
algoritmo B_WIDTH, C_WIDTH).
 Si se elige una implementación paralela, el
En esta sección se describe la implementación del factor F es configurable, si no, su valor se
módulo de bidiagonalización de matrices en estima automáticamente. El factor F determina
FPGAs Virtex-6 y Virtex-7. la cantidad de recursos empleados y la
latencia.
3.1. Descripción del core LAT v1.0
3.2. Descripción del módulo diseñado
El algoritmo a implementar realiza operaciones
aritméticas básicas entre matrices, vectores y
constantes, así que una buena implementación de El módulo diseñado se muestra en la figura 4. Las
este tipo de cálculos es fundamental para un señales de control, el direccionamiento de las
diseño óptimo en recursos y velocidad. memorias y la unidad de control se han omitido
A partir de la versión 13 del ISE Design Suite por claridad. Los datos y las operaciones
de Xilinx está disponible el core Linear Algebra involucradas se realizan en punto fijo en
Toolkit (LAT), versión 1.0, que se ha empleado complemento a dos con una precisión de 16 bits.
para implementar todas las operaciones Para realizar la arquitectura se ha partido de las
matriciales del algoritmo 1, y cuyas características operaciones que hay que realizar en el proceso de
más relevantes son: bidiagonalización que se muestran en el algoritmo
1. El diseño implementado considera matrices de
tamaño 8x8.
 Módulo para FPGAs Virtex-6, Virtex-7,
Inicialmente se introducen los elementos de la
Kintex-7
matriz y se almacenan en la memoria A. Tras la
 Disponibles sumas y restas matriciales, y
carga de los datos, se vuelcan los datos de la fila o
multiplicaciones de matrices por matrices y
columna de la iteración que corresponda de la
matrices por constantes. En aritmética en
matriz A. Estos datos se almacenan en una
punto fijo.
segunda memoria (memoria u) y, al mismo
 Tamaño máximo de 32x32 tiempo, se va realizando el cálculo de σ
 Datos reales y complejos empleando un multiplicador sencillo y un
 Datos en complemento a 2 con precisiones de sumador con realimentación. Este valor debe
entrada y salida de 24 y 48 bits sumarse con elemento de la diagonal o la
respectivamente. superdiagonal correspondiente a la iteración actual
 Implementación de la suma/resta matricial con y que se ha almacenado en un registro. El
LUTs o DSP48E1s. resultado obtenido es el nuevo elemento de la
 Interfaz basada en el protocolo AXI4. diagonal o superdiagonal y se actualiza su valor
 Nivel de paralelización ajustable a través del en la memoria u. Al mismo tiempo, es necesaria
parámetro de plegado F. una nueva multiplicación con σ y una inversión,
para obtener el valor ρ del algoritmo 1.
Así, la interfaz gráfica para el uso del core es Tras obtener los valores de u, σ y ρ, se
muy sencilla. Los parámetros más importantes que procede a la obtención de las nuevas matrices A,
hay que especificar son: U0 y V0.
Para actualizar la matriz A es necesario
 El tipo de operación a realizar entre las cuatro primero computar el vector v. Para el cálculo de v
posibles (así se determina el parámetro se realizan una multiplicación matrical (u·A ó A·u
OP_MODE) dependiendo de si estamos rotando a izquierda o
 Las dimensiones de los operandos. En el caso derecha) y una multiplicación de una matriz por
de multiplicación matricial se especifican 3 un escalar (ρ) empleando el core descrito en el
dimensiones: M, N y L. apartado anterior. A continuación hay otro
multiplicador matricial (en realidad de dos

80
JCRA 2011 | Tenerife 7-9 de Septiembre

vectores, u·v ó v·u) y finalmente una resta Para la actualización de las matrices unitarias
matricial de este resultado con la matriz A de se necesita un nuevo multiplicador matricial
partida en la iteración, con lo que se actualiza el (u·u’), un multiplicador escalar (σ2) y un restador
contenido de la memoria A para la siguiente para obtener Givensizq ó Givensder.
iteración.

Figura 4. Diagrama de bloques del bidiagonalizador de matrices

81
Sesión III: Aritmética Computacional

Sólo queda una última multiplicación La síntesis del sistema total emplea 24
matricial para obtener la nueva matriz (U0 ó V0) y circuitos DSP48E1, 48335 slice registers y 19725
actualizar la matriz unitaria de turno. slice LUTs. En la Virtex-6 XC6VCX75T supone
una ocupación del 8.3% de bloques
4. Estimación de recursos y tiempo de multiplicadores, un 52% de slice registres y un
cómputo 42% de slice LUT. En la Virtex-7 XC7V285T
supone una ocupación del 3.5% de bloques
multiplicadores, un 13% de slice registres y un
La mayor parte del hardware empleado en el
11% de slice LUTs respectivamente. Ambos
diseño del módulo se debe a los cálculos
dispositivos son las FPGAs más pequeñas de sus
aritméticos. Estos suponen la implementación
correspondientes familias.
física de:
Operando a una frecuencia de 100MHz, el
módulo diseñado emplea 49.9μs en realizar la
 3 memorias de 64x16 bits bidia-gonalización de matrices de tamaño 8x8. El
 1 memoria de 8x16 bits mismo algoritmo ejecutado en MATLAB necesita
 2 multiplicadores matriciales [8x1] x [1x8] una media de 560 μs lo que supone una
 1 multiplicador matricial [1x8] x [8x8] aceleración de un factor mayor de 10 en dicho
 1 multiplicador matricial [8x8] x [8x8] cómputo.
 1 multiplicador escalar-matriz [8x8]
 1 multiplicador escalar-vector [8x1] 5. Conclusiones
 3 multiplicadores escalares
 2 restadores matriciales 8x8 La implementación de la bidiagonalización de
 2 sumadores escalares matrices en FPGA usando el core Linear Algebra
 1 divisor Toolkit ha supuesto una computación 10 veces
más rápida que el cálculo empleando Matlab. Esta
La interfaz de usuario de los cores empleados operación es la primera fase que se debe realizar
para el desarrollo de los circuitos aritméticos para la obtención de los valores singulares de
empleados dan una estimación de la latencia que matrices por el método de Golub-Kahan que es la
es necesaria para realizar los cálculos así como la operación principal que debe realizarse para el
cantidad de bloques DSP48 a utilizar. calibrado de un array de cámaras. Este cálculo
debe realizarse múltiples veces para ajustar los
Latencia parámetros característicos de cada una de las ocho
DSP48E1
[ciclos] cámaras, empleando para ello unos 30 minutos
Multiplicador usando Matlab. La realización de todo el proceso
2x1 82
[8x1][1x8] en FPGA permitirá, en un futuro, realizar la
Multiplicador misma calibración en un tiempo un orden de
8 89
[1x8][8x8] magnitud por debajo al menos.
Multiplicador Se observa que el módulo implementado
8 89
[8x8][8x8] ocupa relativamente pocos recursos de las FPGA
Divisor 52 estudiadas (que son las más pequeñas de cada
Restador 8x8 0 5 familia). Una posible mejora consiste en aumentar
Multiplicador el grado de paralelismo de la arquitectura diseñada
1 7 y realizar un circuito completamente pipeline.
escalar-matriz
Multiplicador Próximamente se tratará de implementar la
1 7 descomposición QR [9]. Este algoritmo supone la
escalar-vector
Multiplicador segunda fase del cálculo del SVD de matrices.
3x1 2
escalar
Tabla 1. Recursos y latencia de bloques aritméticos

82
JCRA 2011 | Tenerife 7-9 de Septiembre

Referencias rators and Virtual Environments, pp. 407-422,


14(4), 2005.
[1] Kanjilal, P.P.; Palit, S. On multiple pattern [6] Hartley, R; Zisserman, A. Multiple View
extraction using singular value decomposition, Geometry in Computer Vision. Second
Acoustics, Speech and Signal Processing, Edition. Cambridge University Press, 2003.
IEEE Transactions, 1995. [7] Golub, G.H.; van Loan, C.F. Matrix Compu-
[2] Duan, Z. H. Application of singular value tations, 3rd ed. The Johns Hopkins University
decomposition and functional clustering to Press, Baltimore and London, 1996.
analyzing gene expression profiles of renal [8] Studer, C; Blösh, P; Friedli, P; Burg, A.
cell carcinoma, IEEE CSB 20003. Matrix decomposition architecture for MIMO
[3] Maciejewski, A.A. The Singular Value systems: Design and implementation trade-
Decomposition: Computation and Applica- offs. Proc. 41st Asilomar conf. on Signals,
tions to Robotics, International Journal of Systems and Computers, Pacific Grove (CA),
Robotics Research, 1989, vol. 8. 2007.
[4] Xilinx. LogiCORE IP Linear Algebra Toolkit [9] Luethi, A; Burt, S; Haene, D. VLSI
v1.0. Product Specification DS829 March 1, implementation of a high-speed iterative
2011. sorted MMSE QR decomposition. IEEE Int.
[5] Svoboda, T; Martinec, M; Pajdla, T. A Symp. On Circuits and Systems, 2007.
Convenient Multi-Camera Self-Calibration for
Virtual Environments. PRESENCE: Teleope-

83
JCRA 2011 | Tenerife 7-9 de Septiembre

Inversión rápida en cuerpos GF(2m ) mediante matrices


de exponenciación precalculadas

Luis Parrilla(1) , Encarnación Castillo(1) , Antonio Lloris(1) ,


Antonio García(1) , Guillermo Botella(2)
lparrilla@[Link], ecastillo@[Link], lloris@[Link], grios@[Link], gbotella@[Link]
(1) Dpto. de Electrónica y Tecnología de Computadores. CITIC-UGR, Universidad de Granada
(2) Dpto. de Arquitectura de Computadores y Automática. Universidad Complutense de Madrid

Resumen dad de recursos. A modo de ejemplo, en es-


tándares como el FIPS 186.2 [3] se propone
Las nuevas necesidades para la protección de la la utilización de cuerpos binarios GF(2m ) con
información y las comunicaciones están llevan- m = 193, 233, 283 y 409. Para abordar la mul-
do a la consideración de herramientas cripto- tiplicación o la inversión en estos cuerpos de
gráficas basadas en curvas elípticas e hiperelíp- un orden tan elevado, ha sido necesario desa-
ticas para los nuevos estándares. Estos nuevos rrollar nuevos algoritmos rápidos para efectuar
sistemas criptográficos precisan cada vez de estas operaciones [4], [5] que resultan las más
cuerpos finitos de mayor orden, que presen- críticas a la hora de diseñar un criptoprocesa-
tan dificultades en dos operaciones básicas: la dor sobre curvas elípticas. En cuerpos finitos
multiplicación y la inversión. En estos últimos de estos órdenes, la multiplicación es el prime-
años se han publicado diversos avances en la ro de los problemas a resolver, tanto por cues-
multiplicación, basados en el algoritmo de con- tiones de área como de prestaciones. En el es-
volución rápida de Karatsuba, y la inversión tándar FIPS 186.2, se utilizan bases polinómi-
ha quedado como la operación crítica que de- cas para definir los cuerpos finitos, de manera
fine las prestaciones de los criptoprocesadores que la multiplicación se lleva a cabo mediante
actuales. En este artículo se presentan nuevas multiplicadores de polinomios. En este artículo
arquitecturas para la inversión rápida en cuer- se propondrá una modificación del multiplica-
pos finitos GF(2m ), que suponen un avance dor híbrido de Karatsuba [6], [7], que permite
considerable en prestaciones con respecto a lo mejorar tanto el número de puertas lógicas co-
que puede encontrarse en la bibliografía hasta mo el retardo generado por el multiplicador.
la fecha. En lo referente al cálculo del inverso multi-
plicativo, el algoritmo de Itoh-Tsujii [8] permi-
1. Introducción te reducir considerablemente el número de pa-
sos necesario (y por tanto el número de ciclos
Las tendencias actuales para los criptosiste- de reloj) para el cálculo del inverso en bases
mas de llave pública se están orientando ha- normales. No obstante, es posible generalizar-
cia sistemas basados en curvas elípticas [1] e lo fácilmente a bases estándar, y optimizarlo
hiperelípticas [2] definidas sobre cuerpos fini- mediante el concepto de cadenas aditivas o de
tos. La evolución hacia estos sistemas cripto- Brauer [9]. Combinando adecuadamente estas
gráficos permite usar llaves de menor número ideas, se propondrán una serie de arquitectu-
de bits para mantener el mismo nivel de segu- ras orientadas fundamentalmente a reducir la
ridad que los sistemas clásicos como el RSA, latencia en el cálculo del inverso multiplicati-
pero implican también el uso de herramientas vo, manteniendo unos incrementos de área y de
matemáticas que precisan de una gran canti- retardo aceptables con respecto a otras solu-

85
Sesión III: Aritmética Computacional

ciones [10], [11]. El artículo se ha estructurado Dado que se está trabajando en un cuerpo fi-
de la siguiente forma: la sección 2 se dedica al nito, el cuadrado se puede calcular como:
problema de la inversión en cuerpos finitos de-
finidos sobre bases polinómicas, introduciendo p2 (x) = C · p(x) (3)
el algoritmo de Itoh-Tsujii para su obtención.
donde C es una matriz m × m. En la sección
La sección 3 se dedica a los multiplicadores,
3 se obtendrá la expresión para esta matriz en
exponiendo diversas soluciones y proponiendo
función del polinomio F(x) de definición del
la más apropiada para cuerpos finitos de orden
cuerpo.
elevado, concretamente para GF(2233 ). La sec-
Así, el problema queda reducido a calcular
ción 4 presenta una serie de nuevas arquitectu- m−1
−1
ras para realizar la inversión rápida basadas en p2 , tratando de utilizar exponenciacio-
el pre-cálculo de matrices de exponenciación, nes a partir de la matriz del cuadrado. Una
y finalmente en la Sección 5 se proporcionan solución es utilizar el desarrollo en serie:
las conclusiones. n−1
n Y i
−1
p2 = p2 (4)
i=0
2. Inversión en cuerpos finitos
GF(2m ) donde haciendo n = m − 1, se obtiene el in-
m
verso aplicando m − 2 veces la matriz del cua-
Los cuerpos finitos GF(2 ) presentan espe- drado consecutivamente y realizando los m − 2
cial interés en codificación y criptografía. En productos de polinomios correspondientes. Si
caso de utilizar bases polinómicas o están- ambas operaciones se realizan combinacional-
dar, estos cuerpos se construyen sobre poli- mente, es posible completar el cálculo usando
nomios irreducibles, de manera que las opera- m − 2 ciclos de reloj (la elevación al cuadrado
ciones de suma y multiplicación quedan per- final se supone combinacional). Para m = 4
fectamente definidas. Por ejemplo, uno de los resulta razonable, pero para un cuerpo como
cuerpos utilizados en el estándar FIPS 186-2 el GF(2233 ), resulta un número de ciclos de re-
[3] es GF(2233 )/(x233 + x74 + 1), de manera loj excesivo. Para reducir el número de ciclos
que la multiplicación dentro del cuerpo impli- de reloj puede recurrirse al algoritmo de Itoh-
ca una multiplicación de polinomios y una re- Sujii (ITA) [8] modificado para su aplicación
ducción modular sobre el polinomio utilizado en base estándar (ITA generalizado) [5]. Es-
para construir el cuerpo. m−1
−1
te algoritmo permite calcular p2 usando
matrices de elevación al cuadrado, a partir de
2.1. Inversión a partir del Pequeño Teore-
cadenas aditivas de Brauer [9], tal y como se
ma de Fermat
expone a continuación.
El cálculo del inverso multiplicativo sobre un
cuerpo de este tipo puede realizarse apli- 2.2. Inversión mediante ITA generalizado
cando una extensión del Pequeño Teorema k
−1
de Fermat (LFT) [5], de manera que dado Definiendo αk (p) = p2 , es inmedianto de-
p(x) ∈ GF (2m )/F (x) el inverso p−1 (x) ∈ mostrar que:
GF (2m )/F (x) se puede calcular como: k j
αk+j = (αj )2 αk = (αk )2 αj (5)
m
p−1 = p2 −2
(1)
de manera que es posible ir escribiendo
m−1
−1
Teniendo en cuenta que: p2 en función de potencias más peque-
ñas relacionadas siempre a partir de matri-
m m−1
−2 −1 2 ces de elevación aplicadas sucesivamente. La
p2 = (p2 ) (2)
cuestión es ahora ir eligiendo k y j en cada
se puede calcular el inverso obteniendo paso para pasar de 1 (α1 (p) = p) a m − 1
m−1 m−1
−1 −1
p2 , y elevando el resultado al cuadrado. (αm−1 (p) = p2 ) con el menor número de

86
JCRA 2011 | Tenerife 7-9 de Septiembre

Tabla 1: Inversión utilizando ITA generalizado Tabla 2: Inversión utilizando quad-ITA en


en GF(2233 ) GF(2233 )
αj αj+k exponenciación βj βj+k exponenciación
1 α1 (p) p 1 β1 (p) p3
1 2 1 2
−1
2 α2 (p) α1+1 (p) (α1 )2 α1 = p2 2 β2 (p) β1+1 (p) (β1 )4 β1 = p4 −1

21 23 −1 41 43 −1
3 α3 (p) α2+1 (p) (α2 ) α1 = p 3 β3 (p) β2+1 (p) (β2 ) β1 = p
3 6 3 6
−1
4 α6 (p) α3+3 (p) (α3 )2 α3 = p2 4 β6 (p) β3+3 (p) (β3 )4 β3 = p4 −1
21 27 −1 1 7
−1
5 α7 (p) α6+1 (p) (α6 ) α1 = p 5 β7 (p) β6+1 (p) (β6 )4 β1 = p4
7 14
−1
6 α14 (p) α7+7 (p) (α7 )2 α7 = p2 6 β14 (p) β7+7 (p)
7
(β7 )4 β7 = p4
14
−1
14 28
−1
7 α28 (p) α14+14 (p) (α14 )2 α14 = p2 7 β28 (p) β14+14 (p) 414
(β14 ) β14 = p 428 −1
1 29
−1
8 α29 (p) α28+1 (p) (α28 )2 α1 = p2 8 β29 (p) β28+1 (p)
1
(β28 )4 β1 = p4
29
−1
29 58
−1
9 α58 (p) α29+29 (p) (α29 )2 α29 = p2 9 β58 (p) β29+29 (p) 429
(β29 ) β29 = p 458 −1
58 116
−1
10 α116 (p) α58+58 (p) (α58 )2 α58 = p2 10 β116 (p) β58+58 (p)
58
(β58 )4 β58 = p4
116
−1
2116 2232 −1
11 α232 (p) α116+116 (p) (α116 ) α116 = p

C 2 , y se aplica la siguiente expresión:


pasos intermedios, formando una cadena aditi- k j
va en la que cada nuevo valor (k +j) se puede βk+j = (βj )4 βk = (βk )4 βj (7)
escribir como suma de dos valores anteriores.
de manera que el cálculo se puede completar
Este tipo de cadenas aditivas se denominan 232 116
en un paso menos (p2 −1 = p4 −1 = β116 ),
cadenas de Brauer, y en [9] se comparan va-
aunque se parte de β1 (p) = p3 , tal y como se
rios métodos heurísticos para encontrar cade-
muestra en la Tabla 2. Según los resultados
nas de Brauer mínimas. Asimismo, en [12] se
presentados en [11], el ITA generalizado basa-
puede encontrar una base de datos de las mis-
do en la matriz C (squarer-ITA) precisa de 36
mas para el rango 1–1024. A modo de ejemplo,
ciclos de reloj para la inversión en GF(2233 ),
considérese el cuerpo GF(2233 )/(x233 +x74 +1).
mientras que utilizando como matriz básica C 2
En este caso, m − 1 = 232, y puede usarse por
(quad-ITA), se precisan solamente 30. Para ca-
ejemplo la siguiente cadena de Brauer mínima:
da uno de los pasos se necesitan como mínimo
U 1232 = {1, 2, 3, 6, 7, 14, 28, 29, 58, 116, 232} (6) dos ciclos de reloj, uno para aplicar la multi-
plicación por la matriz correspondiente, y otro
Nótese como cada elemento de la cadena puede para la multiplicación de polinomios. En algu-
ponerse como suma de dos elementos anterio- nos casos se necesitan ciclos de reloj adiciona-
res (2 = 1 + 1, 3 = 2 + 1, etc), partiendo del les, porque la exponenciación se lleva a cabo
1 y llegando hasta el 232 (m − 1). La Tabla 1 mediante una cadena de matrices C (o C 2 ) de
muestra como puede aplicarse la expresión (5) longitud máxima 8, para contener el área y el
232 retardo. Por ejemplo, el paso 7Q de la Tabla 1
para obtener α232 = p2 −1 , necesitando un
precisa multiplicar por C 14 = 14 i=1 C, y por
total de 231 elevaciones al cuadrado y 10 pro-
tanto se necesitarían tres ciclos de reloj:
Q en
ductos de polinomios. El inverso se obtendría
el primero se multiplicaría por C 8 = 8i=1 C
finalmente como p−1 = α232 (p)2 , añadiéndo-
utilizando la cadena de 8Qmatrices completa,
se un paso más con una elevación al cuadrado
en el segundo por C 6 = 6i=1 C, utilizándola
final.
parcialmente, y en el tercero se realizaría la
multiplicación de polinomios.
2.3. ITA mediante matrices 4k Existe la posibilidad de generalizar la idea, y
seguir disminuyendo el número de pasos a base
La aplicación de cadenas aditivas segun el al-
de utilizar matrices más grandes. Por ejemplo,
goritmo ITA puede aplicarse también con ma- k
k si se usa 8k = 23 se tendría:
trices de elevación del tipo 4k = 22 [11]. Para
k j
ello, se utiliza como estructura básica la matriz γk+j = (γj )8 βk = (γk )8 γj (8)

87
Sesión III: Aritmética Computacional

Sin embargo, en este caso no se obtiene ningu- opción para contener el área. Por otra parte,
na ventaja porque el valor inicial γ1 (p) = p7 en [4] se propone el desarrollo de multiplica-
precisa de varios ciclos de reloj, y matrices adi- dores híbridos de Karatsuba, que permiten
cionales (la unidad básica en este caso es C 3 ). mejorar los resultados en área y retardo,
Independientemente del procedimiento de in- combinando adecuadamente multiplicación
versión que se utilice, se precisan de dos ele- clásica y recursiva. Este tipo de multiplicador
mentos básicos: un multiplicador y la matriz es el que se utiliza en la implementación del
del cuadrado C o una de sus potencias. En la quad-ITA [11]. En este artículo proponemos
siguiente sección se aborda la implementación utilizar una variación del multiplicador de
de estos dos elementos. Karatsuba en el que no se generan solapa-
mientos, reduciendo apreciablemente el área
y el retardo. Este multiplicador se describe en
3. Multiplicación en cuerpos [13], y en el presente artículo se ha mejorado
GF(2m )/F (x) convirtiéndolo en un multiplicador híbrido sin
solapamiento.
La multiplicación en cuerpos finitos binarios
definidos sobre bases estándar GF(2m )/F (x)
3.1. Mutiplicador de Karatsuba-Ofman
se realiza en dos fases: en primer lugar se efec- sin solapamiento
túa el producto de los dos polinomios, y a con-
tinuación una reducción modular sobre el po- Dados dos polinomios p(x), q(x) ∈ GF (2m ),
linomio de definición del cuerpo. La Figura 1 éstos se pueden escribir como [13]:
muestra el esquema general de un multiplica-
m−1 n−1 n−1
dor para cuerpos finitos definidos sobre poli- p(x) =
X i
pi x =
X
p2i x
2i
+
X 2i+1
p2i+1 x
nomios irreducibles. i=0 i=0 i=0
(9)
m−1 n−1 n−1
i 2i 2i+1
X X X
q(x) = qi x = q2i x + q2i+1 x
Multiplicador i=0 i=0 i=0

donde m = 2t y n = 2t−1 (t > 1). Haciendo


p y = x2 , se pueden definir
m
Multiplicador r s
RM
de polinomios 2m-1 m n−1
i
X
q pe (y) = p2i y
m i=0
(10)
n−1
i
X
po (y) = p2i+1 y
i=0

Figura 1: Multiplicador sobre GF(2m )/F (x) y análogamente qe (y) y qo (y) de manera que:
p(x) = pe (y) + xpo (y)
(11)
Dados dos polinomios p(x), q(x) ∈ q(x) = qe (y) + xqo (y)
GF (2m )/F (x) de grado m − 1, su pro-
ducto de polinomios dará como resultado un EL producto p(x) × q(x) puede escribirse en-
polinomio r de grado 2 · (m − 1), que se puede tonces:
representar mediante 2m − 1 componentes pq =(pe (y) + xpo (y))(qe (y) + xqo (y))
binarias. En el caso de valores elevados de m, 2
=[pe (y)qe (y) + x po (y)qo (y)]+
el bloque multiplicador de polinomios precisa x[pe (y)qo (y) + po (y)qe (y)]
de una gran cantidad de área, que además (12)
=[pe (y)qe (y) + ypo (y)qo (y)]+
aumenta como m2 si se implementa como x{[(pe (y) + po (y))(qe (y) + qo (y))]−
un multiplicador clásico. El multiplicador de [pe (y)qe (y) + po (y)qo (y)]}
Karatsuba [6] permite diseñar multiplicadores
recursivos cuyo número de puertas aumenta Teniendo en cuenta que la resta sobre GF(2)
como mlog2 (3) , perfilándose como una buena es equivalente a la suma y que multiplicar por

88
JCRA 2011 | Tenerife 7-9 de Septiembre

Tabla 3: Comparación de las complejidades de Tabla 4: Resultados de síntesis para multipli-


los multiplicadores cadores NOKOA híbridos sobre un dispositivo
Algoritmo #AND #XOR Retardo Virtex-5
Clásico m2 (m − 1)2 log2 (m)T X + T A n #LUTS Retardo (ns)
KOA mlog2 (3) 6mlog2 (3) − 8m + 2 (3log2 (m) − 1)T X + T A
2 14636 12.165
NOKOA mlog2 (3) 6mlog2 (3) − 8m + 2 (2log2 (m))T X + T A
4 14203 11.320
8 12380 10.731
16 11379 10.019
x o y = x2 equivale a desplazamientos sin cos- 32 12557 9.526
te computacional, el producto puede realizarse 64 15379 9.472
descomponiendo la multiplicación de orden m
en tres productos de orden m/2, más las su-
mas correspondientes sin solapamientos. Ope- 3.2. Reducción modular
rando de forma recursiva, se tiene que el núme- Una vez obtenido el polinomio producto r =
ro de puertas crece como mlog2 (3) , tal y como p × q, éste ha de reducirse modularmente di-
se muestra en la Tabla 3. En esa misma tabla vidiendo por el polinomio utilizado para de-
se observa las mejoras que supone este mul- finir el cuerpo, obteniendo el polinomio s ∈
tiplicador (NOKOA) con respecto al KOA en GF (2m )/F (x). El proceso de reducción mo-
términos de retardo. dular se puede describir mediante una ma-
Nótese que el multiplicador clásico presen- triz RM obtenida a partir de las componen-
ta menor retardo que el KOA o el NOKOA, tes del polinomio de definición del cuerpo F =
y que para valores de m pequeños también el {f0 , f1 , · · · , fm } como sigue:
número de puertas es menor. El multiplicador
híbrido de Karatsuba [4] aprovecha este hecho RM = [I(m)|D] (13)
para truncar la recursividad y usar multiplica- donde I(m) es la matriz identidad m × m, y
dores clásicos en las últimas etapas. Esta mis- D viene dada por:
ma idea se ha aplicado en este trabajo con-
siguiendo una nueva implementación para el di,0 = fi , i = 0, 1, ...m − 1
multiplicador que mejora las existentes, dan- di,j = di−1,j−1 ⊕ di,0 · dm−1,j−1
(14)
do lugar a un multiplicador híbrido con menor d−1,j = di,1 = 0
área y retardo. Para m = 8, el multiplicador i = 0, 1, · · · m, j = 1, 2, · · · m − 1
clásico resulta ventajoso en área y retardo, pa-
ra m = 16, el número de puertas de los tres En general, el coste de la matriz de reducción
multiplicadores es similar, pero el retardo del modular depende del orden del cuerpo y del
clásico es sensiblemente menor, y para m = 32 polinomio de definición F (x). Para el cuerpo
el número de puertas del multiplicador clási- GF(24 )/(x4 + x3 + 1) RM tiene un coste de 9
co es mayor, pero todavía puede compensar la puertas XOR de 2 entradas, mientras que para
ganancia en retardo. Ya para m = 64 la di- GF(2233 )/x233 + x74 + 1), RM tiene un coste
ferencia en número de puertas empieza a ser de 537 puertas.
excesivo. La Tabla 4 compara los resultados
de síntesis para un multiplicador híbrido NO- 3.3. Elevación al cuadrado
KOA con m = 256 y número de bits para co- Con representación en base estándar, para ele-
mienzo de multiplicación clásica n=2, 4, 8, 16, var al cuadrado en GF(2m ) se puede utilizar
32 y 64, en una FPGA de la familia Virtex- que:
5 de Xilinx (xc5vtx240t-2ff1759). Finalmente, (a + b)2 = a2 + b2 (15)
se ha decidido utilizar un multiplicador híbri- y por tanto, dado p(x) = pm−1 xm−1 +· · · p1 x+
do con n = 16 por motivos de ahorro en área, p0 , su cuadrado vendrá dado por:
aunque n = 32 también puede resultar una
buena opción si resulta prioritario el reducir p2 (x) = pm−1 x2(m−1) + pm−2 x2(m−2) +
(16)
retardos. · · · + p 1 x2 + p 0

89
Sesión III: Aritmética Computacional

Una vez obtenido el producto polinómico, de- (xc5vtx240t-2ff1759). Los datos se han obte-
be realizarse la reducción modular sobre el po- nido a partir de los procesos de síntesis y pla-
linomio F (x), usando la matriz RM . Es in- ce&route proporcionados por la herramienta
mediato ver a partir de (16) que la operación ISE 12.2. En el caso del retardo, los resultados
de elevar al cuadrado sobre GF(2m )/F (x) se de síntesis difieren bastante de los obtenidos
puede representar mediante una matriz m × m tras la fase de place&route debido a la gran
construida tomando las columnas de RM co- cantidad de LUTs implicadas, que generan re-
rrespondientes a los coeficientes pares. tardos de enrutamiento difíciles de estimar con
precisión. No obstante, se han incluido para
realizar comparaciones con los inversores pre-
4. Arquitecturas rápidas basadas en sentados en [11], donde solo se proporcionan
matrices precalculadas resultados de síntesis. Así, en la tabla se han
incluido el número de LUTS, el retardo, el nú-
Las implementaciones basadas en el algorit-
mero de ciclos de reloj, el tiempo total pa-
mo ITA precisan de varios ciclos de reloj para
ra calcular el inverso, T , y el parámetro de
obtener la multiplicación por las potencias de
desempeño de área-prestaciones, definido co-
la matriz C en el caso del squarer-ITA, o C 2 si
mo P = 1/(#LU T S × retardo × #ciclos), tras
se aplica el quad-ITA. Además, se necesita un
las fases de síntesis y de place&route. Señalar
ciclo adicional para realizar la multiplicación
también que en [11] no se han incluido en los
de polinomios. En el presente articulo se pro-
resultados los ciclos de inicialización, por lo
pone realizar el precálculo de las matrices ne-
que a efectos de comparación se han omitido
cesarias e implementarlas como circuitos com-
también en la Tabla 5, aunque se ha indica-
binacionales, de manera que puede realizarse
do entre paréntesis el número de tales ciclos
el cálculo en un solo ciclo de reloj. Incluso, te-
para cada una de las implementaciones. Como
niendo en cuenta que el multiplicador de poli-
puede verse en la tabla, para la arquitectura
nomios propuesto es también puramente com-
prc-ITA, el área necesaria es un 50 % mayor,
binacional, se puede realizar cada uno de los
pero el número de ciclos de reloj se ha dis-
pasos de la Tabla 1, en un sólo ciclo de reloj,
minuido en un 300 %. El retardo es superior,
reduciéndolo de 33 (30 usando quad-ITA) a so-
al tener dos módulos combinacionales en serie
lamente 10 (más 1 de inicialización). La prin-
(la matriz correspondiente y el multiplicador
cipal dificultad que presenta consiste en pre-
de polinomios), pero el tiempo necesario pa-
calcular las matrices C, C 3 , C 7 , C 14 , C 29 , C 58
ra realizar el cálculo total es considerablemen-
y C 116 e implementar los correspondientes cir-
te menor, resultando una mejora global, como
cuitos combinacionales teniendo en cuenta el
muestra el parámetro P . No obstante, a partir
elevado número de puertas lógicas que contie-
de esta primera arquitectura, se pueden reali-
nen algunas de ellas (por ejemplo C 58 requiere
zar modificaciones para optimizar el área y/o
26957 puertas). Ha sido necesario desarrollar
el retardo, como se muestra a continuación.
un conjunto de herramientas software, deno-
minadas gftools para generar de forma auto-
4.1. Optimizaciones en área
mática estos circuitos, y plantear la arquitec-
tura que se muestra en la Figura 2, denomina- Para mejorar el área, pueden eliminarse algu-
da prc-ITA. Como puede verse, son necesarios nas de las matrices de mayor tamaño, y gene-
los módulos combinacionales de las 7 matrices rar cadenas de matrices, a costa de añadir al-
mencionadas, dos multiplexores, el multiplica- gún ciclo de reloj. Así, puede eliminarse C 116 ,
dor de polinomios, una unidad de control y y añadir un ciclo de reloj para calcularla a par-
un registro. En la Tabla 5 se muestran los re- tir de dos iteraciones sobre C 58 . Por otra parte,
sultados de implementación y retardos para el como el tamaño de C 14 es superior a 2 matri-
cuerpo GF(2233 )/(x233 + x74 + 1), compara- ces C 7 , se ha sustituido por dos matrices C 7
dos con el squarer-ITA y quad-ITA [11] para en serie. La arquitectura puede verse en la Fi-
un dispositivo de la familia Virtex-5 de Xilinx gura 3, y se ha denominado prcop1-ITA. Una

90
JCRA 2011 | Tenerife 7-9 de Septiembre

Tabla 5: Resultados de síntesis para inversores sobre GF(2233 ) sobre un dispositivo Virtex-5
Algoritmo #LUTS Retardo sint.(ns) Retardo p&r (ns) #ciclos T(ns) T p&r (ns) P P p&r
squarer-ITA 21379 7.09 - 33 (1) 234 - 199.9 -
quad-ITA 20950 7.79 - 30 (2) 233.7 - 204.2 -
prc-ITA 32511 14.83 37.4 10 (1) 148.3 370.4 207.4 82.24
prcop1-ITA 26448 16.00 26.71 11 (1) 176.0 293.8 214.8 128.7
prcop2-ITA 20414 16.58 25.52 14 (1) 232.1 357.3 211.0 137.1
prcops-ITA 21938 6.41 15.96 24 (1) 153.8 383.0 296.3 119.0
prcquad-ITA 22008 6.80 16.14 22 (1) 149.6 355.1 303.7 128.0

p p
p-1 p-1

mux
C
C
mux

Multiplicador
Multiplicador C3 sobre GF(2233)
C3 sobre GF(2233) clk sel clk
C7
sel

mux
C7

mux
C7 R
mux

C14
mux

R C29 sel

mux
C29 qsel Rsel
Unidad de csel Renable
sel Control Rsel
C58
C58 qsel Rsel Renable
Unidad de csel
Control Rsel RC
C116 Renable Renable qsel
fin clk
reset clk
qsel
inicio fin
clk
reset
inicio
Figura 3: Inversor sobre GF(2233 )/x233 + x74 +
1 con matrices precalculadas optimizado en área
Figura 2: Inversor sobre GF(2233 )/x233 + x74 + 1 (prcop1-ITA)
con matrices precalculadas

Figura 4 puede verse la arquitectura corres-


segunda optimización consiste en eliminar C 58 pondiente, prcops-ITA, que sigue resultando
a costa de añadir otros 3 ciclos de reloj (ite- ventajosa con respecto a las implementaciones
rando ahora sobre C 29 para los cálculos de C 58 aparecidas en la bibliografía hasta la fecha al
y C 116 ), resultando la arquitectura que hemos necesitar de un menor número de ciclos de re-
denominado prcop2-ITA. En este caso, se ob- loj, y mantener cifras similares de retardo a
tiene la implementación con menos área de to- las del squarer-ITA o quad-ITA. Finalmente,
das (mejorando incluso al squarer-ITA gracias incorporando la idea del quad-ITA, se ha desa-
a las mejoras introducidas en el multiplicador), rrollado una arquitectura similar para imple-
aunque el retardo sigue siendo más elevado. mentar la Tabla 2, denominada prcquad-ITA,
y que ahorra dos ciclos de reloj.
4.2. Optimizaciones en retardo

El retardo puede mejorarse introduciendo un 5. Conclusiones


registro intermedio, de manera que solo se ten-
ga un bloque combinacional entre registros; a Se han presentado una serie de nuevas arqui-
costa de duplicar el número de ciclos de re- tecturas para el cálculo rápido del inverso mul-
loj necesario. La introducción de este regis- tiplicativo en cuerpos del tipo GF(2m )/F (x),
tro intermedio permite al sistema funcionar basadas en el uso de cadenas aditivas aplicadas
a frecuencias de reloj más elevadas, aunque según el algoritmo de Itoh-Tsujii. Las arquitec-
el tiempo total para realizar la operación de turas desarrolladas obtienen mejores tiempos
inversión también resulta más elevado. En la de cálculo a partir de la idea de realizar el pre-

91
Sesión III: Aritmética Computacional

p p-1 [2] N. Koblitz, “Hyperelliptic cryptosystems”,


Journal of Cryptology, Vol.1, No.3, pp. 129–

mux
mux
C Renable
150, 1989.
Multiplicador
C3 sobre GF(2233)
sel R
C7
mux

Rsel [3] National Institute of Standards and Techno-


clk
logy, Digital Signature Standard (DSS), FIPS

mux
C7 clk

C29 RC
186-2, 2000.
Renable csel
csel
qsel
RCenable Unidad de sel [4] F. Rodríguez-Henríquez, C.K. Koc¸, “On Fully
Control qsel
RCenable
Rsel
Parallel Karatsuba Multipliers for GF(2m ),”
clk Proc. Int. Conf. Computer Sci. and Tech. (CST
reset
inicio fin 2003), pp. 405-410, 2003.

[5] J. Guajardo, C. Paar, “Itoh-Tsujii Inversion in


Figura 4: Inversor sobre GF(2233 )/x233 + x74 + 1 Standard Basis and Its Application in Crypto-
con matrices precalculadas optimizado en retardo graphy and Codes,” Design, Codes and Cry-
(prcops-ITA) ptograpphy, Vol. 25, pp. 207–216, 2002.

[6] Karatsuba, A.: “The complexity of compu-


cálculo de las matrices de exponenciación, en tations,” Proc. Steklov Inst. Math. vol. 211,
pp.169-183, 1995.
lugar de utilizar cadenas de matrices simples,
disminuyendo así de forma considerable el nú- [7] C. Rebeiro, [Link], “Power attack
mero de ciclos de reloj. Para realizar el pre- resistant efficient FPGA architecture for Ka-
cálculo de las matrices se ha desarrollado un ratsuba multiplier,” en Proc. 21st Int. Conf.
conjunto de herramientas software (gftools), VLSI Des. (VLSID), pp. 706-711, Washington
que además generan de manera automática el DC, 2008.
módulo VHDL correspondiente. Se ha mejo- [8] T. Itoh, S. Tsujii, “A fast algorithm for com-
rado también el diseño del multiplicador de puting multiplicative inverses in GF(2m ) using
polinomios con respecto a las soluciones que normal bases,” Inf. Comput., Vol. 78, no. 3, pp.
aparecen en la bibliografía. La solución inicial 171-177, 1988.
obtenida, prc-ITA presenta no obstante algu-
nos inconvenientes como un área elevada y un [9] F. Gelgi, M. Onus, “Heuristics for Minimum
Brauer Chain Problem,” ISCIS 2006, LNCS
retardo combinacional que limita la frecuencia
4263, pp. 47—54, 2006.
de reloj a la que puede operar. Ambos incon-
venientes se pueden paliar introduciendo una [10] [Link]íguez-Henríquez, G. Morales-Luna,
serie de optimizaciones en área y/o retardo, N.A. Saqib, N. Cruz-Cortés, “Parallel Itoh-
de manera que se han proporcionado distin- Tsujii multiplicative inversion algorithm for a
tas posibilidades según las características del special class of trinomials,” Des. Codes Cry-
sistema de procesamiento criptográfico en el ptography, vol. 45, no.1, pp. 19–37, 2007.
que se vayan a incluir, y el dispositivo progra- [11] C. Rebeiro, S.S. Roy, D.S. Reddy, D. Mukho-
mable en que se realice la implementación. En padhyayy, “Revisiting the Itho-Tsujii Inversion
todo caso, las arquitecturas presentadas resul- Algorithm for FPGA Platforms,” IEEE Trans.
tan claramente ventajosas con respecto a otras on VLSI, accepted for publication,2011.
propuestas, como ha puesto de manifiesto el
[12] G. Resta, “Additions Chain’s Database”. Dis-
parámetro general de área-prestaciones P .
ponible: [Link]
staff/[Link]/ac/
Referencias [13] H. Fan, J. Sun, M. Gu, K.Y. Lam, “Overlap-
free Karatsuba-Ofman Polynomial Multiplica-
[1] N. Koblitz,“Elliptic curve cryptosystems”, tion Algorithms”, IET Information security,
Mathematics of Computation, Vol. 48, pp. vol. 4, no. 1, pp. 8–14, 2010.
203–209, 1987.

92
JCRA 2011 | Tenerife 7-9 de Septiembre

Arquitectura distribuida diseñada en XSG para el cálculo de


autovalores y autovectores en FPGAs

Ignacio Bravo, Alfredo Gardel, José L. Lázaro, Carlos Fernández, Jorge García
ibravo@[Link]; alfredo@[Link], lazaro@[Link] [Link]@[Link]
Departamento de Electrónica. Escuela Politécnica Superior, Universidad de Alcalá
Campus Universitario. Carretera Madrid Barcelona km. 33.600
28871 – Alcalá de Henares. Madrid

Resumen significativa de un espacio de datos. Uno de los


problemas que se encuentra en la aplicación de
Este trabajo presenta una arquitectura modular técnicas PCA es la necesidad de cálculo de la
codificada en Xilinx System Generator (XSG) matriz de transformación, formada por los
orientada al cálculo de autovalores y autovectores autovectores más significativos de la matriz de
de matrices simétricas en FPGAs. A diferencia de covarianza. La dificultad en el cálculo de esta
otras propuestas, la presente está íntegramente matriz de transformación radica en que en muchas
ejecutada en una FPGA alcanzando un pleno aplicaciones la de covarianza es de grandes
rendimiento debido a su estructura concurrente. dimensiones, por ejemplo en algoritmos de visión
Inicialmente esta propuesta se empleó en el por computador [1], y además en ciertos casos se
algoritmo de análisis de componentes principales requiere la actualización on-line de dicha matriz
(PCA), sin embargo su versatilidad y flexibilidad de transformación. En estos casos es donde se
permiten su portabilidad a cualquier aplicación justifica la necesidad de implementaciones
que lo requiera. Gracias a XSG de forma cómoda hardware para el cálculo de los autovalores y sus
se puede parametrizar diferentes aspectos del correspondientes autovectores, por la alta carga
funcionamiento de la citada arquitectura. El computacional que demandan.
diseño alcanzado tuvo como premisas alcanzar la Este proyecto está basado en el diseño de una
máxima eficiencia posible empleando para ello el arquitectura hardware específica para el cálculo de
menor número de recursos internos de la FPGA. los autovalores y autovectores de la matriz de
covarianza de entrada, para su posterior
1. Introducción implementación en una FPGA. Dicho diseño se ha
realizado en base a la herramienta Xilinx System
Generator (XSG), la cual es una librería de
Hoy en día, en muchos campos de estudio y
Simulink que permite al usuario realizar diseños
desarrollo, cada vez es más usual y necesario
hardware de forma cómoda y abstracta para su
trabajar con procesamientos que manejan una gran
posterior implementación en una FPGA del
cantidad de datos, agrupados muchas veces en
fabricante Xilinx.
matrices de diferentes tamaños. Con lo cual, se
Además de ello, se analizan las principales
hace imprescindible disponer la mayoría de las
ventajas e inconvenientes del diseño en cuestión,
ocasiones de algún método eficaz y rápido para
dando especial importancia a factores como la
poder simplificar tal cantidad de datos, y así
precisión de los datos con los que opera, los
trabajar únicamente con los parámetros más
errores cometidos en los resultados obtenidos, el
importantes sin perder por supuesto información
tiempo e ejecución empleado para realizar todos
relevante.
los cálculos, o los recursos hardware utilizados
Un método para llevar dicho fin a cabo es el
para llevar a cabo su implementación en una
empleo del algoritmo PCA (Principal Component
FPGA concreta de Xilinx, comparando dichos
Analysis), el cual es una técnica estadística
resultados con los obtenidos mediante MATLAB
utilizada para reducir la dimensionalidad de un
o con técnicas más clásicas de diseño hardware
conjunto de datos. De modo que su principal
como la programación directa en lenguaje VHDL
ventaja es la reducción de la dimensión de la
información, manejando únicamente aquella más

93
Sesión III: Aritmética Computacional

En este sentido la solución propuesta, permite entrada reduciendo así el número de operaciones
extender la arquitectura para un tamaño de matriz aritméticas dentro del cálculo de autovalores.
distinto, ya que la arquitectura diseñada utiliza En lo que se refiere a la dimensión de las
módulos con estructuras regulares y por ello se matrices, la solución desarrollada permite una
puede ampliar sin necesidad de grandes cambios fácil expansión a diferentes tamaños. Inicialmente,
en la configuración de la arquitectura global. La en el presente proyecto se detalla la explicación
solución además aporta la ventaja de emplear del sistema para un tamaño de matriz de entrada
módulos que se ejecutan en paralelo, evitando al de 8x8 (M = 8) y 10x10 (M=10) elementos,
máximo un alto grado de dependencia de datos siendo todos ellos números reales.
entre los distintos módulos, lo que permite La elección de trabajar inicialmente con estos
alcanzar una elevada velocidad en el cómputo. tamaños de M viene justificada principalmente
El resto del trabajo se divide de la siguiente por el estudio experimental desarrollado en [6]
forma: en el capítulo 2 se presentan los donde se afirma que el número óptimo de
fundamentos matemáticos básicos para el cálculo imágenes para construir el modelo de fondo de
de autovalores y autovectores. En el capítulo 3 se PCA aplicado a visión artificial para la detección
presenta la arquitectura hardware desarrollada. El de objetos, se establece entorno entre 8 y 12
capítulo 4 presenta los resultados más imágenes (M = 8, M = 12), estando por tanto los
significativos alcanzados y por último el capítulo resultados para M = 8 y 10 imágenes dentro del
5 muestra las conclusiones y futuros trabajos rango idóneo.
derivados del presente trabajo. Con respecto al cálculo de autovalores y
autovectores, habitualmente éste se desarrolla en
2. Cálculo de autovalores y autovectores. sistemas basados en procesadores digitales [7].
Debido a las características internas de sus
El cálculo de autovalores y autovectores es arquitecturas, el proceso de cálculo es
una operación que requiere gran carga eminentemente secuencial, empleando un elevado
computacional, lo cual se convierte en un gran tiempo de cómputo en ello. Con el fin de mejorar
inconveniente para su implementación en FPGAs la velocidad del sistema, en algunas arquitecturas
debido a su naturaleza interna. Existen propuestas se guardan en tablas de memoria los valores
previas al auge de las FPGAs como [2] y [3] las trigonométricos necesarios para realizar el cálculo
cuales están basadas en una arquitectura sistólica. de autovalores y autovectores [9].
Sin embargo dichas propuestas no fueron Dentro de las diferentes alternativas para la
implementadas físicamente ya que la tecnología diagonalización, la basada en el método propuesto
del momento no permitía una implementación en por Jacobi [10] es la más utilizada, ya que facilita
dispositivos ASIC para matrices mayores de 3x3. su implementación en estructuras hardware de
En el presente caso el diseño ha sido realizado procesamiento paralelo.
íntegramente en el entorno XSG de Mathworks- Refiriéndonos ya al cálculo matemático de
Xilinx. La elección de esta herramienta viene autovalores (λ) y autovectores (V) de una matriz
justificada ante la dificultad de variar los valores y de entrada simétrica y real (C), existen varios
tamaños de las matrices de entrada así como el métodos posibles ya demostrados, aunque todos se
número de iteraciones del algoritmo desarrollado. basan matemáticamente en la siguiente expresión:
De esta forma, se permite agilizar y variar la C⋅V = λ ⋅I⋅V (1)
búsqueda de parámetros que mediante [4] (base en
la que se fundamente el presente trabajo) Para la obtención de los autovalores de una
conllevaban un elevado tiempo de desarrollo y matriz utilizando hardware específico, se precisa
simulación. Esta propuesta, al igual que en [3] y de alguna técnica recurrente para la
[4], el funcionamiento del sistema está basado en diagonalización de la matriz. Una vez obtenida la
módulos CORDIC (COordinate Rotation Digital matriz diagonal, D, los valores que aparecen en su
Computer) [5] que se encargan de resolver las diagonal principal coinciden con sus autovalores.
operaciones trigonométricas que se poseen. Esto es debido a que, dada una matriz inicial C,
Además, en la solución desarrollada en este que se denomina de aquí en adelante como S para
proyecto se aprovecha la simetría de la matriz de simplificar su notación, sus autovalores asociados
(λ) y su matriz de autovectores (V) se obtienen a

94
JCRA 2011 | Tenerife 7-9 de Septiembre

partir de la expresión (1). Si en esta ecuación se se necesita aplicar recursivamente diferentes


multiplica por la izquierda por V-1, se obtiene: matrices R α ( ( ))
k
∈ ℜ M × M , de tal forma que los
V −1 ⋅ S ⋅ V = D (2) factores trigonométricos de estas matrices se
vayan desplazando por las posiciones de los
La matriz V es unitaria y ortogonal por lo que elementos a eliminar. Esto implica que en cada
su inversa es igual a su transpuesta (VT=V−1). Así, iteración se debe crear una nueva
se puede reescribir la expresión (2) como: ( )
R α (k ) ∈ ℜ M ×M en función del elemento a
eliminar. De esta forma cuando se realice la
VT ⋅ S ⋅ V = D (3)
última iteración se habrá obtenido una matriz
El algoritmo de Jacobi es un método iterativo diagonal (D) donde los elementos de la diagonal
donde teóricamente se necesitarían un número se corresponden con los autovalores y donde la
infinito de iteraciones. En la práctica, el número matriz R α ( )
(k ) ∈ ℜ M × M , contendrá en cada
de iteraciones necesarias, se fija teniendo en columna los autovectores asociados a cada
cuenta que el elemento de fuera de la diagonal con autovalor correspondiente [12].
mayor valor absoluto sea inferior a una tolerancia
prefijada. En ese momento se habrá conseguido ⎛1 . 0 . 0 . 0 ⎞
diagonalizar la matriz original (S) y por lo tanto se ⎜ ⎟
habrá obtenido D. Así, particularizando (3) ⎜. . . .⎟
⎜0 cos sin 0 ⎟
expresada en función de la iteración actual (k), se
obtiene: ( )
R α (k ) = ⎜
⎜ 0 - sin cos 0 ⎟
⎟ (5)
⎜ ⎟
S ( k +1) = V ( k )T ⋅ S ( k ) ⋅ V ( k ) = (4) ⎜. . . .⎟
⎜0 0 0 1 ⎟⎠
donde k es el número de iteración y su valor ⎝
va desde 0 hasta teóricamente infinito. Para k = 0,
S(0)=S. Nótese que la matriz D ha sido sustituida
por S(k+1). Esta matriz representa el resultado de ( )
S (k +1) = R α ( k )
T
( )
⋅ S(k ) ⋅ R α (k ) (6)
realizar el producto de la matriz V(k ) y su
transpuesta por la matriz S de la iteración anterior Con objeto de realizar un procesado en
(S(k )). Suponiendo que en la iteración x se alcanza hardware más eficiente e intentando paralelizar en
la tolerancia prefijada en la diagonalización, en la medida de lo posible al máximo el sistema, se
ese caso S(x) = D. Por tanto, el objetivo de este propone descomponer las matrices S y R en
método es encontrar una matriz V(x) = V, de tal submatrices de 2x2 elementos. Su principal
forma que al realizarse la doble multiplicación de ventaja es el ahorro de número de operaciones,
la expresión (4), resulten prácticamente nulos reduciendo así el número de iteraciones necesarias
todos los coeficientes de D excepto los de su para obtener el resultado final. Su principio de
diagonal. Justamente es en esta característica en la funcionamiento es similar al anterior explicado,
que se fundamenta la propuesta de Jacobi: la pero con la diferencia de que las operaciones de
búsqueda de una matriz final D haciendo rotación de matrices se realizan individualmente
paulatinamente cero los elementos no para cada submatriz de 2x2 elementos [4][12].
pertenecientes a la diagonal. Para conseguir
eliminar coeficientes progresivamente, el método 3. Arquitectura Desarrollada.
de Jacobi emplea las matrices de rotación que
posteriormente se denominaron como de Givens
( )
La arquitectura diseñada está basada en las
R α (k ) ∈ ℜ M × M [11]. Así, la expresión (4) mismas premisas expuestas en [12]. Dicha
empleando (5) como matriz V(k) quedaría como arquitectura no sólo aprovecha la condición de
(6). simetría de la matriz de covarianza de entrada
( ( ))
Como la matriz R α k ∈ ℜ M × M sólo
para trabajar únicamente con su matriz triangular
superior, sino que, para poder ahorrar una gran
elimina un elemento (dos si la matriz es simétrica) cantidad de recursos internos de la FPGA, emplea

95
Sesión III: Aritmética Computacional

dos módulos CORDIC con una estructura en similares a las que se obtendrían con un
pipeline cada uno de ellos, para poder realizar las array sistólico.
operaciones trigonométricas demandadas por el • Bajo número de recursos de la FPGA
algoritmo, trabajando así a una alta velocidad de consumidos comparado con estructuras
ejecución. sistólicas para el cálculo de autovalores
Basándose en la reducción del número de y autovectores e independiente del
datos a operar, la Figura 1 muestra un diagrama de tamaño de las matrices de entrada [12].
bloques de la arquitectura planteada para la • Empleo de módulos CORDIC
ejecución concurrente y con un consumo eficiente trabajando en coordenadas circulares,
de recursos internos, del cálculo de autovalores y para resolver las multiplicaciones con
autovectores. Su funcionamiento interno ejecuta el matrices y operaciones trigonométricas.
método de Jacobi aplicado a matrices de 2x2 • Flexibilidad para trabajar con diferentes
elementos. Así, su estructura interna está tamaño de matrices (M) y tamaños de
compuesta únicamente de dos módulos CORDIC, datos (n)
memorias, registros y multiplexores. • Arquitectura interna concurrente.
• Cálculo de autovalores y autovectores
realizado mediante una misma
arquitectura con una estructura interna
en pipeline.
Inicialmente la matriz de covarianza de entrada
está almacenada en una memoria de datos DUAL-
PORT (DP). Una máquina de estados FSM (Finite
State Machine) gobierna el sistema en todo
instante y ejecuta las micro-instrucciones
necesarias, leídas de una memoria ROM de
programa. Este código contiene los valores
binarios correspondientes a la activación o
desactivación de las señales de control de la
arquitectura general.
De la Figura 1 destacan dos CORDIC, que son
los bloques destinados a llevar a cabo todas las
operaciones trigonométricas de (6). Ello hace
referencia al cálculo de ángulos (modo
vectorización) de (5) y rotación de vectores
pertenecientes a las submatrices 2x2 (modo
rotación) de (6).
Figura 1. Diagrama de bloques de la arquitectura Al emplearse dos módulos trabajando
implementada simultáneamente, acelera el tiempo de ejecución
global del algoritmo. El CORDIC B está diseñado
Esta propuesta de implementación tiene como de tal forma que es capaz de trabajar en los dos
características destacables: modos posibles (rotación y vectorización).
• Ejecución del algoritmo de cálculo de Mientras que el CORDIC A únicamente está
autovalores y autovectores de forma diseñado para poder trabajar en modo rotación. Se
íntegra en una FPGA. emplean únicamente dos CORDIC ya que debido
• Cálculo de autovalores y autovectores a la secuencia de funcionamiento del algoritmo y
de S a partir de su matriz triangular a la dependencia de datos, con 2 módulos se
superior gracias a la condición de alcanza la máxima eficiencia posible.
simetría de S. Se puede observar también en la Figura 1 una
• La arquitectura física propuesta no memoria RAM para el almacenamiento temporal
responde a la de un array sistólico, pero de ángulos de cada iteración. Para solventar
desde el punto de vista de conflictos de uso de la DP, se emplean dos
procesamiento, las características son memorias FIFO con la finalidad de almacenar los

96
JCRA 2011 | Tenerife 7-9 de Septiembre

resultados temporales de autovectores. Además,


en el proceso de cálculo en los CORDICs, existen
una serie de ciclos de espera (latencias) desde que
se terminan de introducir todas las coordenadas de
entrada a los mismos hasta que comienzan a salir
los primeros resultados a escribir en la DP. Ciclos
que dependen del número de bits por palabra con
el que se trabaje y el tamaño de la matriz de
entrada. De modo que dichos ciclos de espera son
aprovechados para rotar también la matriz de
autovectores, quedando pues dichos resultados
temporales almacenados en las memorias FIFO.
El resto de módulos y componentes hardware
del diseño son empleados para la correcta
circulación del flujo de datos, tales como Figura 3. Interior de la memoria ROM particularizado
reducidos circuitos lógicos, registros o para M=8.
multiplexores controlados por la FSM,
dependiendo sobre todo del modo en el que se
encuentre trabajando el diseño en cada instante. 4. Resultados
El proceso de cálculo de autovalores y
autovectores es iterativo. De modo que los A la hora de evaluar los resultados de la propuesta
resultados de una rotación de matrices serán los presentada en este trabajo, se han empleado dos
valores iniciales de entrada a los dos módulos métodos diferentes: por una parte se han
CORDIC para la siguiente iteración. Cuando se comparado los resultados alcanzados con los que
hayan completado un número determinado de ofrece Matlab (coma flotante) y por otro lado con
iteraciones, en la memoria DP se tendrán los resultados alcanzados en [12] dónde se emplea
almacenados los autovalores y la matriz de al igual que en este trabajo aritmética en coma
autovectores de la matriz inicial de covarianza. fija. En ambos casos se han utilizado como
El núcleo de la Figura 1 es una FSM matrices de entrada, matrices de covarianza las
encargada de direccionar una memoria ROM la cuales son simétricas reales y de tamaño 8x8 y
cual en su interior contiene las diferentes 10x10, procedentes de imágenes reales.
microinstrucciones que se deben realizar en cada También en este apartado se analiza a fondo
iteración para resolver (6). En la Figura 2 se no solo el error cometido durante el cálculo de los
muestra el diagrama de flujo asociada a la FSM. autovalores y autovectores, sino también otras
Por su parte la Figura 3 expone cada una de las características importantes del diseño hardware
instrucciones de la ROM de la Figura 1. realizado como el número de iteraciones h
necesario en cada caso (según el parámetro M)
S5
WR Final de  para obtener los resultados más próximos a los
resultados obtenidos con MATLAB, o los recursos
consumidos en una FPGA de la familia Virtex
S0 S1
S4
2Pro de Xilinx, en función de algunos parámetros
Carga 
inicial de 
Cálculo 
Ángulos. 
Rotación  característicos elegidos como por ejemplo el
Autovectores
Matrices WR BRAM número de bits de precisión.
Con respecto al número de iteraciones que se
deben realizar para que los autovalores y
S2 S3 autovectores alcanzados sean lo más próximos a
1ª Rotación  2ª Rotación 
Autovalores Autovalores los valores ideales, en todo momento se ha podido
intentar fijar un umbral de iteraciones concreto a
realizar en cada caso para obtener la máxima
precisión posible. Inicialmente se partió del valor
Figura 2. Diagramas de estado de la FSM de la Figura
expuesto por Jacobi [10], en donde se fija como
1.
número de iteraciones óptimas la expresión (7).

97
Sesión III: Aritmética Computacional

Sin embargo, las experiencias prácticas realizadas desde XSG con los obtenidos en MATLAB.
para diferentes matrices, mostraron que para la Dichas matrices poseían en algunos casos tamaño
arquitectura propuesta el valor óptimo de de 8x8 (M=8) o de 10x10 (M=10). Además de
iteraciones es el expuesto en (8). variar el número de iteraciones (N) con objeto de
extraer el valor de h óptimo (8) (ver Figura 4)
h = M log(M ) (7) también se varió el ancho de la palabra (n) desde
18 a 22 bits (ver Figura 5 y Figura 6).
h = 5 + M log( M ) Analizando el error obtenido en los
(8) autovalores (Figura 4), se puede comprobar como
Con respecto a los errores entre la arquitectura el número óptimo de iteraciones se establece en
propuesta y los ofrecidos por MATLAB, el error 22 que es el resultado redondeado de sustituir M
se ha medido acorde a (9), siendo en dicha por 8 en (8). Este análisis también se extendió a
expresión, Vi un valor genérico de autovalor o los autovectores, alcanzándose en ambos casos la
autovector. misma conclusión.
Por su parte, en cuanto al tamaño ideal del
Vi − Vi ancho de los datos (n) también desde un punto de
XSG MATLAB
errori (%) = × 100 vista de autovalores, se observa en las gráficas de
Vi (9) la Figura 5 y Figura 6, que el error es mínimo para
MATLAB
n=22 (para valores superiores el error aumenta).
De esta forma se podría suponer que el valor ideal
En base a este error se establecen como para n fuera 22, sin embargo, analizando el
índices de comparación el error máximo (10) y el número de recursos consumidos por la FPGA para
error cuadrático medio (11). distintos n se puede comprobar en la Tabla 1
como éste aumenta notablemente para tamaños
eMAX (%) = max(errori (%)) (10) grandes de datos. Estos resultados fueron
alcanzados mediante la versión Xilinx ISE 10.1.
Por ello y tal como ocurre en numerosas
∑ (errori (%) )
k
2 ocasiones, nos encontramos ante el compromiso
i =0 (11) de priorizar entre errores y recursos consumidos.
eSQRT (%) =
k
Las principales fuentes de error durante de la
ejecución del algoritmo se encuentran en los dos
subsistemas CORDIC de la arquitectura, ya que es
en ellos donde se lleva a cabo toda la carga
matemática.
Comparando los resultados generados en
MATLAB mediante la función eig, con los
obtenidos en XSG, existe el problema de
establecer el número de bits óptimo de la palabra
y dentro de ésta cuántos para parte decimal y
Figura 4. Errores en autovalores más significativos
cuántos para parte fija (aritmética en coma fija). para matrices de 8x8 en función del
Gracias a las prestaciones de XSG, podemos ir número de iteraciones (N).
variando de forma cómoda la posición del punto
decimal con objeto de obtener la precisión idónea. Tabla 1. Número y porcentaje de recursos internos
Inicialmente para un tamaño de datos (n) de 18 consumidos para una XCV2P7 en
bits, se concluyó que la mejor resolución se función de n.
obtenía con 2 bits para parte entera y el resto para
decimal. n 18 19 20 21 22
Slices 2559 3020 3151 3495 3635
Así, se seleccionaron 100 matrices de
% uso 51.9 61.2 63.9 70.9 73.7
covarianza diferentes como entradas del sistema y
se procedió a evaluar los resultados alcanzados

98
JCRA 2011 | Tenerife 7-9 de Septiembre

autovectores tanto desde el punto de vista de


errores cometidos durante el cálculo como desde
el número de recursos internos consumidos de la
FPGA seleccionada, otros factores importantes del
mismo deben ser aquellas características que lo
diferencien de otras técnicas clásicas de diseño
hardware implementado en FPGAs, es decir, sus
principales diferencias respecto al mismo diseño
realizado en lenguaje de descripción hardware
VHDL. Para ello los resultados alcanzados en el
presente trabajo son comparados con los
Figura 5. Errores en autovalores para matrices de 8x8 expuestos en [4] y [12].
en función del ancho de los datos (n). De los diferentes resultados obtenidos con
Si se analizan los errores alcanzados por los respecto al caso de autovectores (peor de los
autovectores, se puede observar como los valores casos) se puede concluir que en el caso de XSG el
obtenidos son superiores a los autovalores. Esto es error cuadrático medio máximo no supera el 6%
debido a que el error de la fase de autovalores es con respecto a MATLAB. Sin embargo, en el caso
acumulado por la fase de autovectores. Además de [4] y [12] la precisión en VHDL, trabajando
tal y como se puede observar en la Figura 7 se con 18 bits, aplicando redondeos internos, y para
puede observar como un autovector (en este caso un número de 22 iteraciones en total, el peor error
el número 3) posee un error muy superior al resto. cuadrático medio cometido es del 0,0236%. Es
Esto es debido a la falta de precisión en los datos decir, el diseño realizado mediante técnicas
del ángulo de rotación de este autovector. clásicas VHDL es del orden de 100 veces más
preciso que el realizado mediante XSG. Esto es
debido fundamentalmente al módulo CORDIC
empleado y a los elementos XSG empleados. En
el caso de XSG éstos no permite una optimización
máxima para la aplicación diseñada así como un
control profundo en el redondeo interno de estos
elementos.
Con respecto a los recursos internos
consumidos, para un ancho de palabra de 18 bits,
el diseño de cálculo de autovalores y autovectores
Figura 6. Errores en autovalores para matrices de mediante XSG consume de la FPGA Virtex 2Pro
10x10 en función del ancho de los datos VP7 1126 slices más que empleando técnicas
(n). optimizadas en VHDL, es decir, se estaría
hablando de utilizar un 22,82% menos de recursos
internos al decantarse el programador por esta
segunda opción.
Por último evaluando los tiempos de ejecución
de ambos sistemas para una misma matriz de
entrada y n=18, el diseño en VHDL es un 53,16%
más rápido que el algoritmo en XSG. Esta
diferencia es debida a la existencia de 2 señales de
reloj en [4] mientras que las restricciones de XSG
no permiten emplear esas 2 señales.

Figura 7. Errores en autovectores para matrices de 8x8 5. Conclusiones


para n=18 y N=22.

Una vez comprobada la validez del diseño En este trabajo se ha expuesto el desarrollo de
realizado en XSG para el cálculo de autovalores y un sistema de cálculo de autovalores y

99
Sesión III: Aritmética Computacional

autovectores mediante XSG. Gracias a la Referencias


versatilidad de esta herramienta, el desarrollador
puede variar y ajustar cómodamente parámetros [1] Cavadini M. et al., "Multiprocessor system for high
como la precisión, ancho de palabra o número de resolution image correlation in real time", IEEE
iteraciones del algoritmo de Jacobi. Sin embargo a Transactions on VLSI Systems, 9:439 -449,2001.
la vista de los resultados logrados con respecto a [2] Brent, R. P.; Luk, F. T.; “The solution of singular-
trabajos previos que implementan una arquitectura value and symmetric eigenvalue problems on
similar en VHDL, se puede observar como los multiprocessor arrays”. SIAM J. Scientific and
resultados logrados desde el punto de vista de Statistical Computing. vol. 6, pp: 69-84, 1985.
precisión, velocidad y recursos consumidos, en [3] Cavallaro, J.R.; Luk, F.T.; “CORDIC Arithmetic for
an SVD Processor”. Journal of Parallel and
XSG distan bastante de los de VHDL. Visto uno
Distributed Computing, vol. 5, pp 271-290, 1998
las preguntas inmediatas que se plantean son ¿Por [4] Bravo, I.; Mazo, M.; Lazaro, J.L.; Jimenez, P.;
qué es tan bueno el diseño de VHDL con respecto Gardel, A.; Marron, M. “Novel HW Architecture
al de XSG? ¿Podría mejorarse? ¿Qué ventajas Based on FPGAs Oriented to Solve the Eigen
tiene XSG vs. VHDL? Quizás la clave de todo Problem”. IEEE Transactions on VLSI, vol. 16,
esté en el uso de código VHDL eficiente en vez de issue 12, pp: 1722-1725, 2008.
cores ya establecidos por Xilinx. En este trabajo, [5] Walther J.S. “A unified algorithm for elementary
la principal fuente de error e imprecisión de la functions”. AFIPS Spring Joint Computer Conf.
arquitectura diseñada mediante XSG son los 1971, pp 379-385. 1971
módulos CORDICs. Esta alternativa que ofrece [6] Vázquez González, J.F. “Sistema de apoyo a la
Xilinx al programador es muy cómoda y rápida, seguridad de vías férreas basado en técnicas de
análisis de imágenes”. Tesis Doctoral.
pero su principal inconveniente es que a la hora de Departamento de Electrónica. Universidad de
la implementación normalmente ocupa más Alcalá. 2006.
recursos internos de la FPGA y no posee tanta [7] Choi, S.; Yun, D.; Lee, H.; “Blind adaptive
exactitud, como la diseñada ad-hoc en VHDL. beamforming algorithms based on the extreme
Sin embargo, no todas las comparaciones son eigenvalue problem”. Proceedings of the IEEE
negativas para el diseño en XSG. Existen otro tipo International Symposium on Antennas and
de ventajas con respecto a VHDL que no se Propagation Society, vol. 4, pp: 2418 – 2421. 1997.
cuantifican fácilmente como la flexibilidad para [8] Minami, Y.; Iijima, N.; Mitsui, H.; Yoshida, Y.;
variar el tamaño M en las matrices de entrada (en Sone, M.; “High speed calculation of eigenvalue by
digital signal processor” Proceedings of the 35th
[4] M es fijo).
Midwest Symposium on Circuits and Systems,
Quizás el aspecto más importante que vol.2, pp:1136 – 1139. 1992.
diferencia el diseño en VHDL con el de XSG es el [9] Herron, T.J.; Reddy, K.M.; Garg, R.; Devanahalli,
tiempo de desarrollo de ambas soluciones. El K.; “Eigen Decompositions of Covariance Matrices
tiempo empleado en [4] fue superior a 10 meses on a Fixed Point DSP”. National Conference on
por parte de 1 diseñador experto en VHDL, Communication. Indian Institute of Technology,
mientras que el presente trabajo fue implementado Madras, India. 2003
en 5 meses por un programador novel. Por tanto [10] Wilkinson, J.H.; “The algebraic eigenvalue
de nuevo se está ante la controversia de sopesar problem”. Oxford Science Publications, ISBN:
tiempo de desarrollo frente a exactitud. 0198534183, 1999
[11] Givens, J.W.; “A method of computing
eigenvalues and eigenvectors suggested by classical
Agradecimientos results on symmetric matrices”. National Bureau of
Standards Applied Mathematics Series, 29, 117-
Este trabajo ha sido posible en parte al 122, 1953.
proyecto ESPIRA (REF-DPI2009-10143) [12] Bravo, I. “Arquitectura basada en FPGAs para la
detección de objetos en movimiento, utilizando
financiado por el Ministerio de Ciencia e
visión computacional y técnicas PCA”. Tesis
Innovación. Doctoral, Departamento de Electrónica de la
Universidad de Alcalá, 2007.

100
JCRA 2011 | Tenerife 7-9 de Septiembre

Computación acelerada en FPGA para la simulación de


absorción de partículas

Manuel Rodríguez Valido, Cristian Sobota Rodríguez, Mario Jakas Iglesias y Eduardo
Magdaleno CaVtelly
mrvalido@[Link], csobota@[Link], mmateo@[Link], emagca@[Link]
Dpto. Física Fundamental Exp., Electrónica y Sistemas,
Facultad de Física,
Universidad de La Laguna.

Resumen regulares que difícilmente resultan en la


arquitectura ideal para resolver diferentes
En el siguiente trabajo se presenta un demostrador algoritmos computacionales. Con las FPGAs, en
hardware para acelerar la computación científica. contraste, es posible construir computadores
A modo de ejemplo elegimos un modelo físico personalizados para cada problema algorítmico
sencillo de absorción de partículas en un medio. A específico. Este enfoque conlleva beneficios
pesar de la poca complejidad del modelo nos significativos en desempeño, consumo energético
aseguramos en su elección que tuviera un alto y tamaño físico.
grado de recursividad. Dicho demostrador fue Este trabajo pretende situarse justamente en
diseñado e implementado en una FPGA virtex 5. una nueva franja de terreno no demasiado
De los resultados obtenidos, concluimos que con explorado. Donde los nuevos dispositivos con alta
un solo Chip de estas características, se puede integración de puertas lógicas empiezan  a 
alcanzar la potencia de cálculo de 68 PCs. permitir competir con sistemas mucho más
maduros y establecidos, como los sistemas de
computación científica o de altas prestaciones
1. Motivación basados en procesadores en paralelo. Como
ejemplo de aplicación elegimos un problema
En los sectores involucrados en el desarrollo de la físico no demasiado complejo pero cuya
sociedad, tales como finanzas, biotecnología o simulación requiriera una alta recursividad y
exploraciones de gas y petróleo etc., existe un además fuera el primer paso de futuras
serio interés en la utilización de sistemas de alto simulaciones más complejas y con modelos más
rendimiento computacional o High Performance ajustados a la realidad. La idea básica era
Computing (HPC) para resolver problemas comprobar si con un diseño implementado en
computacionalmente intensivos y FPGA se podrían realizar simulaciones numéricas
simultáneamente ahorrar espacio y reducir el aplicadas a problemas de transporte de partículas
consumo de energía. en un medio y si el rendimiento supondrá una
En los últimos 15 años, la industria se ha mejora con respecto a los sistemas tradicionales
desplazado desde plataformas de computación de cómputo. A su vez nos propusimos investigar
masivamente paralela (como las ofrecidas por cuales son las posibles virtudes y puntos débiles
Cray o SGI) a clústeres de servidores estándares de este método y adquirir experiencia para
en la industria. La mayoría de las soluciones HPC mejorar posibles enfoques a problemas de
de la actualidad están basadas en este enfoque de simulación numérica en casos más genéricos.
clústeres, donde se involucran grandes matrices de
microprocesadores conectados de forma simétrica 2. Simulación de absorción de partículas.
con una infraestructura interna de comunicaciones Método de Monte Carlo
diseñada para obtener el mayor ancho de banda
posible y bajas latencias. Los métodos de Monte Carlo se definen como
Aunque este sistema es escalable y fácilmente aquellos que involucran el uso deliberado de
gestionable, está compuesto por estructuras

101
Sesión III: Aritmética Computacional

nnúmeros aleatoorios en cálcu ulos que tieneen la prod


ducen choques con otras partículas, essta
estructura de unu proceso esto ocástico, entenndido decrrementa su enerrgía en ΔE.
éste como unna secuencia de estados cuya El algoritmo para la simuulación de esste
evolución está determinada
d porr eventos aleatoorios. procceso figura 2, se
s basa en la reepetición iterativ
va
En simulaciiones digitales,, estos eventoss son de avances
a en el “eeje x" del materrial y decremen
nto
ggenerados mediiante números aleatorios. Diichos de energía
e según laas ecuaciones siiguientes.
mmétodos, son muy
m efectivos computacionalm mente
comparados conn métodos deterministas al ttratar
pproblemas multii-dimensionaless. Esto es, en pparte,
laa razón de suu utilización taan generalizada da en
ddiversos camppos como física estadísstica,
Donde ξi rep presenta un nnúmero pseud do-
crromodinámica cuántica y particularmente een el
aleaatorio con distribución uniform me en [0,1].
campo en el quee estamos intereesados como lo es el
Paraa cada iteraciónn, si la partículaa tiene suficien
nte
trransporte de raddiación.
enerrgía, continúa su avance trav avés del materiial
Como un primer acercam miento al usoo de
hastta que su energíía sea nula o mmenor a un umbrral
FFPGAs para el cálculo científfico hemos eleegido
v la partículaa ha alcanzado el
estaablecido. Una vez
uun modelo de abbsorción simplee. En dicho moodelo
estaado de reposo por dentro ddel material, es
nno se han tenidoo en cuenta efecctos de scatterinng, la
alm
macenado el avan nce que se ha pproducido según n
ddeflexión con respecto al eje e de avancee, la
ggeneración de partículas
p secunndarias y otro llargo
etcétera.
En este sentido propon nemos el cálcculo,
mmediante un alggoritmo iterativo o, de la distribuución
reesultante de paartículas al atravvesar un medioo. La
innteracción de estas
e partículass con las molécculas
constitutivas dell material se describe mediantee dos
suucesos fundamentales, el choq que de tipo elásstico,
qque disminuye lal cantidad de movimiento
m sobbre el
ejje de propagación, y el camin no libre medio eentre
chhoques. La ocurrencia
o de estos sucesoss se
considera aleatooria.

22.1. Algoritmo de simulación

EEn la figura 1, vemos una u representaación


esquemática dell fenómeno quee deseamos sim mular.
EEn ella se observva como una partícula con eneergía
innicial E0 penettra en un medio o en x0 y a meedida
qque avanza en trramos de longittud λn, y se

Figu
ura 2. Algorritmo de simulaciión de absorción de
d
particuulas

Este algoritmoo basa su arqquitectura en el


cálcculo en punto flotante. Poseee tres elementtos
básiicos, el generador de nnúmeros seud do-
aleaatorios, el módu
ulo cálculo del logaritmo y un
na
interfaz de comunicaciones gigabbit Ethernet paara
Figura 1. Esquema del mod
E delo de absorciónn de communicarse con el mundo exterioor.
particula en
e el material

102
JCRA 2011 | Tenerife 7-9 de Septiembre

33. Generadorr de Númeross aleatorios valo


or al inicio del proceso.
p Una ve
vez implementad do
el generador
g aleaatorio, se realiiza un ciclo de
DDel análisis hecho
h de distintos generaddores simuulaciones del circuito paraa comprobar su
existentes [3], hay
h dos que sob bresalen por suu alta funccionamiento. De los resultadoss obtenemos, qu ue
calidad y son ampliamente utilizados enn la la arquitectura
a impplementada es ccapaz de generrar
aactualidad, el geenerador Mersen nne Twister (MMT) y un número
n aleatorio de 64 bits ppor ciclo de relloj
el NR Ranq11. Sin embarrgo, el generrador denttro del intervalo (1,0] y con uuna resolución de
MMersenne Twistter aunque es de d uso muy coomún 5,4221010862427522 ∗ 10 .
enn aplicaciones de software. Su implementaación
enn paralelo es más
m compleja qu ue la del Ranq1 , y el 4. Modulo Loga
aritmo
pprincipal inconvveniente de su implementacióón es
laa gran cantidaad de valores iniciales
i necessarios Usuualmente los logaritmos son calculad dos
ppara funcionam miento (necesitaa memoria RA AM). numméricamente uttilizando seriees de Taylor y
SSegún un análissis realizado en n [3], se desprrende méttodos métodos iterativos. Sin in embargo esste
qque el rendimiento, en cuanto a velocidadd, es enfo
oque conlleva un u consumo mu muy alto de ciclos
suuperior en Rannq1 que MT. Como C contrapaartida de reloj y recurrsos lógicos, sobre todo en
RRanq1 consumee más recursos en la FPGA. Para intervalos donde la serie convverge lentamen nte
nnuestro diseño hemos
h seleccion
nado el ranq1 ccomo commo por ejemplo en valores cerccanos a cero, porp
ggenerador de núúmero aleatorio.. lo que
q hay que evaluar una ggran cantidad de
Ranq1 es deel tipo Generado or Combinado en el térm
minos para obtener resultados dde alta precisióón.
qque la salida dee un generador de tipo Xorshiift es Esto
o hace que estte método sea muy ineficien nte
inntroducida en e un geneerador de tipo paraa su implementaación en hardwware.
MMultiplicativo. El
E periodo de este
e generador ees de Existen un grang número de estudios y
11,8x10 o lo que q es lo mismo o una frecuenciia de publicaciones sobrre distintas forrmas de resolv ver
ggeneración de 100 millones de números por logaaritmos numérricamente, sinn embargo los
seegundo, el periiodo valido ron ndará los 5700 aaños. trab
bajos enfocadoss a optimizar eeste problema en
LLa estructura diiseñada en hard dware se repressenta hard
dware son mu ucho menos aabundantes. Del D
enn la figura 3,, el generador tiene una sem milla anállisis de estas publicaciones [44,5] parece habber
innicial interna por defecto, pero mediantee un un consenso en utilizar
u de unaa u otra maneera
ppuerto externo de selección es posible activvar la Loookup Tables. Evidentemennte existe un na
leectura de una semilla extterna de 64 bits limiitación en los reecursos de memmoria disponiblles
inntroducida por el usuario, de forma que disttintas en integrados en n los disposittivos de lógica
seecuencias a
aleatorias pu
uedan gener
erarse proggramable, por lol que es inviabble utilizar LUTTs
ar
arbitrariamente. de gran tamaño aunque sí es posible obten ner
beneficios utilizanndo esta técnicca en conjunció ón
con otros métodos computacionalles.
Commo primer paso, p debemoss trabajar co on
logaaritmo en basee 2 y despuéss de obtenido el
resu
ultado, calcular el loggaritmo naturral
mulltiplicando estee valor por uuna constante C
segúún:

Figura 3. Diagrama de Bloqu


D ues del Generadoor de
números Aleeatorios Ranq1 Pasaando el númerro x a nomencclatura de pun
nto
flotaante y en base 2 como sigue
Cabe desttacar que laa estructura del
m ura de pipeline de 5
multiplicador tieene una estructu
etapas por lo quue se produce una
u latencia dee este

103
Sesión III: Aritmética Computacional

5. Interfaz de Comunicacion
C nes y Softwarre
de Visualiza
ación

La ventaja de esta transsformación es que Aun nque en esta simmulación hardwware de absorció ón
ah
ahora debemos evaluar log2(m)) en el intervallo 1≤ de partículas
p no se
s generan dato tos masivamentte.
m < 2, salvandoo los problemass de convergenccia o Creíímos necesario o que por esstar creando un u
nnúmeros muyy grandes que provo quen sisteema escalab
ble para lla aceleracióón
ddesbordamientos. A partir del valor calcuulado commputacional de simulaciones más generalees,
loog2(m) obtenem mos –ln(x) sumáándole n. impplementar una in nterfaz que no ffuera el cuello de
La complejjidad del cálcu ulo del logariitmo, boteella del sistema.
teeniendo en cuuenta, los accesos a mem moria,
mmultiplicacioness y desplazamientos para los
cálculos en puntto fijos con signo, consume cuuatro
ciclos de reloj. Como quereemos optimizaar al
mmáximo la veloccidad de compu utación creamoss una
estructura pipelline formada porp cuatro de eestos
mmódulos logarittmo trabajando o en paralelo y un
circuito de conttrol de flujo dee datos que altterna
enntre ellos de foorma síncrona lo
os datos de entrrada.
AAsí el primer opperando ingresa en el primer

Figura 5. Contrrol de Comunicacciones entre los


módulos y ell Pc

Paraa resolver el problema de comunicacion nes


entrre la FPGA y el PC impllementamos un na
interfaz GigaBit Ethernet. Soobre la interffaz
Etheernet, el protoccolo de usado ssobre Ethernet es
IP(v
v4)/UDP].
Existen tres soluciones com merciales en la
actu
ualidad que imp plementan un sttack UDP/IP. Sin
S
Figura 4. Arquitectura del modulo de cálcuulo embbargo, nosotross implementam mos una interffaz
log
g2(m) proppuesta en [6]. Este móódulo hardwaare
impplementa protoccolo IP/UDP coon capacidad paara
tran
nsmitir Gigabit Ethernet. Este m módulo se puede
mmódulo de cálcuulo de logaritmo en el primer ciclo obteener en OpenCo [Link].
dde reloj. En el e segundo cicclo, otro operrando Los resultados obtenidos trass la simulaciónny
inngresa en el e segundo módulo, y así el ennvío de datos desde
d la FPGA al PC a través de
suucesivamente. De esta forma a partir del cuuarto UDP P/IP/Ethernet y su lecturaa mediante un u
ciclo de reloj, obbtenemos un reesultado en la ssalida proggrama desarrollado en C# see muestran en la
dde datos por cada
c ciclo de reloj. La figuura 4 figu
ura 6. Esta gráfi
fica correspondee a la simulació
ón
mmuestra el móduulo de cálculo del
d logaritmo. de 1 millón de parttículas.

104
JCRA 2011 | Tenerife 7-9 de Septiembre

Otro aspecto clave, a nuesstro parecer, es


supeerar la curva dee aprendizaje quue implica el uso
u
de lenguajes de descripción hhardware. En la
actu
ualidad empiezan a aparecer herramientas de
desaarrollo que abstraen al diiseñador de los
elem
mentos de bajo nivel. Aunque esttas
herrramientas, todavía no han alcaanzado una maasa
crítiica, en un fu uturo cercano es posible qu ue
simp plifiquen la taarea de diseñaar un algoritm mo
commputacional en hardware.
h
Figura 6. Interfa
faz grafica del sofftware de recepcióón y Aunque a priori parecerá qque el tiempo y
visualizaación dificcultad de desarrrollo no quedann justificados por
p
la aceleración
a del cálculo de unna simulación, si
66. Resultadoss teneemos en cuentta que los móódulos hardwaare
(commo el generado or aleatorio o eel logaritmo) soon
SSe realizó una pequeña comparrativa entre disttintas reuttilizables, es posible
p realizaar ahora nuev vas
pplataformas y herramientas
h de cálculo ejecuttando simu ulaciones máss complejas een períodos de
el algoritmo. tiem
mpo mucho máss reducidos.
Tratado en este trabajo, con una poblaación Es nuestro ob bjetivo ampliaar la batería de
innicial de 109 paartículas. Los resultados obtennidos mód dulos hardware para resoolver funcion nes
nnos muestran quue para este nú úmero de partícculas numméricas, y aplicaarlas en un futuuro cercano en la
enn una Virtex 5 (Placa ML506) se tardann 11 simu ulación de proccesos más compplejos
mminutos en sim mular el proceso de absorciónn. El
mmismo algoritm mo desarrollado en C++ y sobrre un Refferencias
AAMD 64 dual core,
c 2,6 GHZ y 3GB RAM ttardó
aalrededor de 3 horas
h y media y el mismo moodelo [1] Malvin
M H. Kalos, Paula A. Whitlock Mon nte
siimulado en Matlab
M tardó más de dos días. Carlo Methodss ", John Wiley & Sons, 1986.
PPodemos concluuir que nuestro sistema acelerra 17 [2] I.
I Koprivnikarr and E. Schhachinger “Deep
vveces la implemmentación hechaa en PC/C++ y 300 penetration Monte Carlo Caalculationsfor th he
vveces la hecha en PC/Matlab b. Basado en eestos European Spalllation Source E ESS, Technisch he
ddatos y en loos recursos hardware,
h podeemos Universit at Gra
G z, Institut f ur Theoretisch he
concluir que enn una FPGA Virtex-5 com mo la Physik,Graz, Austria
A
empleada, podrííamos incluir cuatro
c móduloss que [3] S. Banks, P Beadling, A. Ferencz FPG GA
reealizarán cálculos de simulaciión en paraleloo, por Implementation n of Pseudo R Random Numb ber
loo que el mááximo Through hput obteniblee se Generators fo or Monte Carrlo Methods in
mmultiplicará porr cuatro. De estee modo, con unn solo Quantitative Finance", 20008 Internation nal
chhip, obtendríam mos un rendim miento mayor a 68 Conference on Reconfigurablee Computing an nd
oordenadores enn paralelo con n CPU's com mo la FPGAs
ddescrita. [4] N. Alachiotis, A. Stamatakis EEfficient floatin
ng
point logarithm
m unit for FPG GA, The Exelix xis
77. Conclusión
n Lab. Dept. of Computer Scieence. Technisch he
Universitat Muunchen
LLa utilización ded hardware para p la creaciónn de [5] Salvador E. Trropea FPGA im mplementation of
ar
arquitecturas esppecíficas para el
e cálculo cientíífico, base-n logaritthm , Institutto Nacional de
tiiene varias venntajas con respeecto a los enfooques Tecnología Industrial, B
Buenos Airees,
trradicionales actuales. Sin embargo este enffoque Argentina
pplantea una serie de desafíos y se puede conncluir [6] Nikolaos
N Alaachiotis, Simoon A. Bergeer,
qque, a fecha de hoy,
h se trata dee una tecnologíaa que Alexandros Sttamatakis “effi ficient PC-FPG GA
está madurando, en el sentido de complemenntar a cominication over Gigabit Ethernet”, Th he
laas tecnologías existentes,
e paraa su adopción a gran Exelixis Lab. Departmentt of Computter
escala por la communidad científfica Science. Technnische Universittat Munchen.

105
JCRA 2011 | Tenerife 7-9 de Septiembre

SESIÓN IV:
SISTEMAS TOLERANTES A ERRORES/TEST

A demonstration FPGA symbol generator for DSN telemetry testing ....................................... 109

Robust communications using automatic deployment of a CRC-generation technique in IP-


blocks ........................................................................................................................................ 119

Framework adaptable y reconfigurable dinámicamente para procesamiento de vídeo: aplicación


a la etapa de filtrado adaptativo en sistemas de compresión de vídeo H.264/AVC y SVC........ 127

Design of Asynchronous AMBA based AHB Master Wrapper ................................................ 133

107
108
JCRA 2011 | Tenerife 7-9 de Septiembre

A demonstration FPGA symbol generator for DSN telemetry testing

[Link] MDSCC.
June 21, 2011

Abstract

A demo FPGA symbol generator (FSG) for


Deep Space Network (DSN) telemetry testing
is presented. Most common codes, CCSDS
and DSN convolutional codes, Turbo, Cassini
and Reed Solomon codes are implemented in
this FSG. The realization was done using entry
level, unmodied FPGA development board,
and the s/w tools provided with the kit. The
prototype outputs a parametrized telemetry
symbol stream analyzable by the System Per- Figure 1: Major components of FSG .

formance Tester (SPT). The unit underwent


extensive tests and no errors were observed in
the symbol stream. Operation is controlled PCM formatter
from a serial port using a directive set similar
Encodes symbol streams either NRZL or
to Test Simulator Assy (TSA)
Biphase

Introduction
Randomizer
Simple designs are often very robust and pro-
Implements CCSDS recommendation using
vide reliable operation in the long run. Avail-
generator polynomial
ability of modern FPGAs has made possible 8 7 5 3
X +X +X +X +1
the implementation of very exible, recong-
urable data generators that can be tailored to
the DSN needs without costly hardware board Subcarrier modulator
design. Such is the case of the demo hardware
Modulates square subcarrier with data
symbol generator that uses a commercial low
cost FPGA development board. Fig 1 identi-
es the major vhdl software components. Encoders

Following the discussion in section , the types


Frame generator included in FSG are ..

It comprises two elements, the sync word


generator and the data generator. It pro- • Convolutional DSN
vides ve types of data, all ones, all zeroes,
square wave,loadable frame buer RAM and
• Convolutional CCSDS

a pseudorandom noise (PN) sequence compat-


• Convolutional CASSINI
ible with the System Performance Test (SPT)
BER analyzer. • Turbo Code (all rates and sizes)

109
Sesión IV: Sistemas Tolerantes a Errores/Test

• Reed Solomon CCSDS RS (255,223) dual


base

Direct Digital Synthesizer(DDS)

It is used to synthesize subcarrier and symbol


rate. It should be referenced to site 10 MHZ
for best results, but it can also run out of the
board crystal oscillator. The frequency is set
by the N increment that is input at the phase
accumulator which will wrap at a desired fre- ht

quency governed by the formula

f · 232 Figure 3: DSN schematic.

N= =f ·k (1)
200 · 106
where N =increment
f= desired frequency
k = 21.47483648
sponse is read from the rows of generator ma-
trix which in turn,is determined by tapping.
Since convolution is a linear operation, su-
perimposition applies. Thus, response from a
given input sequence, can be obtained from
convolution, or weighted addition of impulse
responses, as shown in g 3. The manual pro-
cedure is carried out in two phases, rst, omit-
ting the inverter, and secondly, inverting ev-
ery other [Link] this methodology is un-
derstood, VHDL coding poses no major prob-
[Link] core of the code that is implemented
Figure 2: DDS. in the F SG is displayed on g 9 on appendix
A

In order to maintain the maximum 32 bit


resolution , the calculation is carried out by
Since the coder outputs two symbols per in-
one of the monitor and control processors us-
put bit,two dierent processes each running at
ing 64 bit precision by the routine mul32x32
a dierent clock, must be implemented. The
. The frequency resolution for this 32 bit DDS
process dsn_coder generates the output sym-
is 0.046566128730 Hz which even at Voyager
[Link] rate, must double the bit rate. S1
spacecraft low rates represents less than .02 %
is generated in the rst symbol clock, and S2 in
symbol rate error
the second .The process step_coder, advances
the input sequence one [Link] behavior of the

DSN convolutional encoder code can be veried by simulation tool to be


as predicted as shown on g 10. DSN is a
DSN encoder is a text book convolutional paradigm of the convolutional coders of any
encoder. The constraint length is 7 and the rate and constraint. CCSDS convolutional is
rate is 2. The generator matrix and im- synthesized the same way. Cassini convolu-
pulse response are dictated by the specica- tional is more complex, but basically,the same
tion. (g 3). shows how the impulse re- principles apply.

110
JCRA 2011 | Tenerife 7-9 de Septiembre

scaling.
Example Compute 456 mod 223 = 10
24
using 1/223 scaled up by 2 ( 75234.15247)

1 multiply 456 × 75234 = 34306704


2 scaled down by 224 2.0448838905
3 multiply fraction by 223 .0448838905×233 =
9.999075889
4 round o 9.999075889 to 10
The botleneck of interleaved address genera-
tion i s alleviated by this procedure that uses
2 clocks to achieve modulo 223 via hardware.

Table 1: Formulas

Figure 4: Turbo encoder diagram .


m = (s − 1) mod 2
i = b s−1
2k2
c
j = b s−1
2
c − ik2
TURBO encoder t = (19i + 1) mod k21
q = t mod 8 + 1
The turbo encoder comprises two parallel re- c = (pq j + 21m) mod k2
cursive convolutional encoders of constraint Π(s) = 2(t + c k21 + 1) − m
length 4. This coder diers from DSN,
CCSDS etc in the fact that they have back- legend b c = nearest integer
ward, recursive in addition to forward con-
nection vectors, and therefore, they do not
have a nite response. Once a single bit is
entered, the response never extinguishes,even Table 2: Constants
though it repeats after 15 states. Both coders information block k1 k2
have the same wiring and are fed simultane- 1784 8 223

ously,but one of them receives an interleaved 3568 8 223 × 2


( at bit level ) version of the data input, 7136 8 223 × 4
while the other coder receives the data unal- 8920 8 223 × 5
tered. The dierent code rates are obtained
viapuncturing

Interleaver

The information block buer on g 4 ,as de-


signed by its author Claude Berrou,provides
bit interleaving achieved sequentially applying
the formulas on table 1. Notice for instance Figure 5: Turbo interleaving scheme
the modulo k2 operation ( see table 2 ).
Vendor VHDL does not provide modulo Slightly dierent versions of the code had to
functions other than mod 2. Implementing be implemented for each frame length in order
via iteration would have added far too many to cope with subtle rounding [Link] frame
cycles to the operation. The approach was must be available before feeding both encoders
to take advantage of the18 by 18 bit hard- with the direct data, and the bit interleaved
ware multipliers, and transform division to version of [Link] frame must be stored in ad-
multiplication of the inverse with appropriate vance to carry out bit interleaving. This is

111
Sesión IV: Sistemas Tolerantes a Errores/Test

Figure 7: RSE . shift register implementation of

long division

held in the delay elements after all data have


entered
Figure 6: Dual port RAM .
Here, the division is pipelined but very
similar to the hand long division. The
operation is carried out over a Galois Field
implemented via a two port ram ( g 6) able
(in CCSDS Reed Solomon, an extension 8
to hold two frames, in which one port is write
GF (28 )). A straightforward implementation
then read (normal path ) while the other is
of theI · G products would require a table
always read ( interleaved ). During the rst
256 · 256 · 8. But considering that the
length of
half part of the memory cycle, write data is
polynomial G is xed, then only 31 · 256 · 8 bits
written to port A on the present frame ad-
should be required.
dress, then in the second part, both ports are
set to read past frame addresses, port A has When this code was formulated, this was

the normal path data while port B has the in- complex to implement. In 1982, E.R.

terleaved version. Berlekamp working under a JPL contract de-

Generating a reference table with a C pro-


vised a system in which the I·G products could
be implemented serially on a bit by bit basis.
gram proved most useful. It was used inten-
sively while debugging the FPGA interleaver
Multiplying by G can be wired, and the encod-
ing operation performed serially. Ref. [1] ex-
VHDL code.
plains it in depth, and of course ref. [2], is the
original work. Appendix A bit serial product
Reed Solomon encoder provides the very basics.

E.R Berlekamp combined computer simula-


A Reed Solomon codeword C for data set I is
tions and hand computations to nd the best
dened to be the same data set I followed by
combination that would provide minimal gate
the remainder R resulting from the polynomial
n count. He was able to implement all products
division of the scaled up data I · X divided
with 24 two input exclusive or's with three lev-
by a generator polynomial G of degree n. In
els of gate sharing. The parameters he choose
equations:
are the RS(255, 223) CCSDS encoder stan-

I(x) · xn dard. The generator for the GF (28 ) is:


= Q(x) + R(x) (2)
G(x)
x8 + x7 + x2 + x + 1 (4)

C(x) = I(x) + R(x) (3)


The element β = α117 to form the dual basis.
The generator polynomial given by:
being G(x) the generator polynomial of
degree n The key of the encoder is to perform
the division I(x) · xn /G(x) and obtain the the
143 32
remainder R(x). Long divisions are tradition- Y 11j
X
ally implemented via shift registers as shown G(x) = (x − α ) = Gi xi (5)

in g 7, where the remainder of the division is j=112 i=0

112
JCRA 2011 | Tenerife 7-9 de Septiembre

DIRECTIVE DESCRIPTION USED ON


SCF set subcarrier frequency cpu1
SYNC inserted or overlay sync word in frame cpu1
TPA TPB tests points signal selection cpu1
VFY (dump) conguration registers cpu1
CNF set conguration registers cpu1
TBR set telemetry bit rate cpu1
TTG time tag enable disable cpu1
TIME set /read time local to F SG cpu1
IN input port cpu1

Figure 8: M&C . Monitor and control


RST
TURBO
reset CPU
frame= rate=r pattern=ppp
cpu1
cpu1
RAN randomize enable / disable cpu1
PTR data pattern ( pn|alt|one|zero|ram) cpu2
STAT dump hardware status and conguration cpu2
Monitor and control FLG set frame length cpu2
FM ll frame buer cpu2
MCV set convolutional connection vector cpu2

Four eight bit CPUs cooperate to provide hu- PCM set PCM format cpu2
HELP dump cmd list cpu2
man interface, parse commands and perform DF dump frame while being output cpu3

the necessary calculations needed to drive the DM dump frame buer cpu3
FIX select hard coded data for frame buer load cpu3
generator hardware. Monitor and control is
implemented in assembly language on an eight
Table 3: Command implementation
bit CPU design provided free by the ven-
[Link] code is limited to 1k instructions
which was insucient to implement the ba-
sic set of directives.A single CPU ocupies 6 implemented directives. Some of them have
% of real state of the target FPGA, and - no operational value, they were meant to as-
nally four instances of the design were used. sist in [Link] 4 is not listed since it
Parts of the rmware were replicated (direc- mostly conmtains monitor routines and the lcd
tive parser, arithmetic routines) but the design display sign on.
gained simplicity (other approaches like mod-
ifying the vendor assembly language compiler
were discarded ). Monitor and control appears Conclusions
like a single CPU to the user. All directives are
routed to all CPUs but the command is tar- Even lower end FPGAs are suitable for logic
geted only to one, which decodes and cong- implementations of moderate complexity, such
ures the generator hardware according to the is the case of coders used in the DSN. Their
instruction. The acting CPU answers as re- best implementation is in hardware. Moni-
quired. The output RS-232 is accessed by all tor and control was also implemented in the
CPUs through a priority encoding scheme to same FPGA to favor autonomy of the unit.
avoid contention. Master CPU 0 has the high- The multiprocessor scheme was dictated by
est priority and can reset/restart all other via the necessity of keeping the code below 1K
a reset command. At the time of this writ- instructions (CPU design constraint). Cur-
ing, three CPUs are full, while the fourth still rent FPGA spartan 6 (vs spartan 3e) would
can be used to implement additional directives have obviated this requirement ( 4K instruc-
without having to recompile the whole design. tions ). Data generators are tied to particular
The advantage of this scheme is that only the [Link] not desirable ."General purpose"
aected CPU has to be compiled, and the bit are more advisable since they can be instan-
le can be patched, an extremely fast proce- tiated as needed. Simulation plays a very im-
dure ( compared to other compiling processes, portant role in system building. Getting to
of course). Directives listed below, are all the know well the simulation tool can spare much

113
Sesión IV: Sistemas Tolerantes a Errores/Test

time and avoid many design bug headaches.


Attaching memory modules for dumping pur-
poses reveals very useful, in particular, debug-
ging long binary data frames. Finally, par-
titioning designs, improves system debugging
radically.

114
JCRA 2011 | Tenerife 7-9 de Septiembre

References

[1] T.K Trung L.J. Deutsch I.S. Reed I.S.


Hsu K. Wang & C.S. Yeh TDA: The
VLSI design of a Reed-solomon Encoder
using Berlekamp's bit-serial multiplier al-
gorithm. Progress Report 42-70 May and
June 1982.

[2] Elwyn R. Berlekamp, Bit serial Reed-


Solomon encoders Transactions on Infor-
mation Theory, Vol. IT-28, No. 6, Novem-
ber 1982 869.

[3] Consultative Committee for Space Data


Systems RECOMMENDATION FOR
SPACE DATA SYSTEM STANDARDS
TELEMETRY CHANNEL CODING
CCSDS 101.0-B-6 BLUE BOOK October
2002

[4] KCPSM3_Manual KCPSM3 8 bit micro


controller for spartan 3 Virtex II & Virtex
II pro Ken Chapman Xilinx Ltd October
2003

[5] Frequency Generator for Spartan-3E


Starter Kit Ken Chapman Xilinx Ltd
18th July 2006

115
Sesión IV: Sistemas Tolerantes a Errores/Test

Appendix A

Figure 9: VHDL code .

Figure 10: CCSDS simulation .

116
JCRA 2011 | Tenerife 7-9 de Septiembre

Appendix B eld elements


0
α =1
Bit serial products α
α2
Galois elds are built by listing the successive α3 =α+1
powers of a primitive element α that is a α4 = α2 + α
1
root of a prime polynomial such as α5 = α2 + α + 1
α6 = α2 + 1
x3 + x + 1 = 0 (6)

Table 4: α powers
The coecients of equation ( 6 ) belong to the
α exp α2 α 1
α0
ground eld {0,1} in which addition is de-
ned to be the same as subtraction, therefore
0 0 0 1

the following can be written


1 0 1 0
2 1 0 0
x3 = −x − 1 or 3 0 1 1
x3 = x + 1 4 1 1 0

3 5 1 1 1
If α is a root of eq x +x+1 = 0 , this is
equivalent to write
6 1 0 1

Table 5: coes
α3 = α + 1 (7)

The seven non-null elements of the nite set


obtained taking into account equation ( 7 )
In binary numbering, this result is non sense.
from the successive powers of α
This is because these are not octal numbers,
Note that the set is nite as stated since
7 0 but a binary representation of (polynomial )
"wraps around exponent 7, α = α .Elements
element with a basis
can be viewed as vectors expressed by a lin-
2 1 0
ear combination of {α , α , α } as tabulated
A = {α2 , α1 , α0 } (10)
in Table 5. The basis is

Implementing the product of two elements in


A = {α2 , α1 , α0 } (8)
logic circuitry takes either a table lookup up
or reducing all possible products to combina-
and any element can be expressed as
torial logic. The following development will
show how to reduce the implementation to a
a = a2 α 2 + a1 α 1 + a0 α 0 (9)
mere shift register and some logic gates. Let
The product of two elements can be dened us consider representing two numbers b and c
simply as the sum of the exponents(taking in a dierent basis
base α logarithms, adding and then taking an-
tilogarithms ) B = {β 2 , β 1 , β 0 } (11)

3 4 7 0
α ·α =α =α related to A by

Should we associate elements to the binary


β 2 = α , β = α 2 (2 ) and β 0 = α0
number formed by their coecients, we would
have Let us develop the product of two number a
expressed in base A and b expressed in base B
011 × 110 = 001
and assume a result c also in base B, namely
1 Evariste
Galois called these nonexistent roots,
etranges racines, not more strange that complex a = a2 α 2 + a1 α + a0
numbers, he argued,which do not exist, but however,
we operate with them naturally
2 Note that β is set to α2

117
Sesión IV: Sistemas Tolerantes a Errores/Test

Table 6: Basis equivalence


exp normal exp dual
α2 α α 0
octal # α0 α2 α octal #

α0 0 0 1 1 β0 1 0 0 4
α1 0 1 0 2 β2 0 0 1 1
α2 1 0 0 4 β1 0 1 0 2
α3
α4
0
1
1
1
1
0
3
6
β3
β4
1
0
0
1
1
1
5
3
Figure 11: Feedback register .

α5 1 1 1 7 β5 1 1 1 7
α6 1 0 1 5 β6 1 1 0 6

b = b2 α + b1 α 2 + b0
c = c2 α + c 1 α 2 + c 0
c=a×b

After evaluating the product, the equation


Figure 12: Bit serial product .

under matrix representation would look like


this: by a xed polynomial, then, all products have
one of the operands that is a constant.
12
c 0 c 1 c 2 · α = a2 a1 a0 ·
α

b2 b0 + b1 b2 + b1 1
2
b1 b2 b0 + b1 · α


b 0 b 1 b α
2

C =A×B
Figure 13: Constant multiplication .
Matrix B leads itself to hardware implementa-
tion. It can be realized with recirculating reg-
ister and an adder( a shift register with feed-
A toy RS encoder
back and and one exclusive or gate as shown in
g g 11) The rst column is equates to shift
A RS codeword results from appending the re-
register initial load. The second and third are
mainder of a polynomial division to the origi-
obtained adding the two bottom bits and re-
nal data. In equations
circulating the shift register. Fig g 11 shows
the scheme. The successive bits of number c
C(x) = I(x) · xn + R(x) (12)
are obtained by multiplying the row vector A n
by the columns of B. Multiplication by rst
I(x)x
R(x) = − Q(x) (13)
column produces the least signicant bit, the G(x)
next column the middle bit and the last col- where
umn produces the most signicant digit.
Fig g 12 provides an overall view of the
I(x) = input sequence
serial product. First registers are preloaded
G(x)= generating polynomial
with the number a and b. After three clocks,
C(x)= code word
the c register contains the result product .
. Our toy RS encoder will be of type RS(7,5,3)
But circuitry simplies even further when which encoding terminology means 7 symbols
one of the multipliers is a constant as shown in codeword,5 symbols data word,2 check sym-
3 3
in g 13 ( α ). This is the case when dividing bols and dened over a GF (2 ) Galois eld.

118
JCRA 2011 | Tenerife 7-9 de Septiembre

Robust communications using automatic deployment of a


CRC-generation technique in IP-blocks ∗

Jaime Espinosa, David de Andrés, Juan-Carlos Ruiz, Pedro Gil

{jaiesgar, ddandres, jcruizg, pgil}@[Link]


Fault-Tolerant Systems Group (GSTF), Instituto de Aplicaciones de las TIC Avanzadas (ITACA)
Universitat Politècnica de València, Campus de Vera s/n, 46022, Spain
Phone: +34 96 3877007 Ext {75774, 75752, 85703, 79707}, Fax: +34 96 3877579

Abstract the barrier of one micron sized gates in in-


tegrated transistors was long trespassed and
Electronic systems manage their complexity associated negative dependability side-eects
and reduce their time-to-market throughout have come into play [1]. Today, not only harsh
designs integrating o-the-shelf IP cores. As environment or mission critical elements can
fabrication scales are reduced, interactions be- benet from fault-tolerant techniques but also
tween such cores become more sensitive to ac- consumer electronics which are in the need of
cidental faults. A typical strategy to cope with robustness to maintain a high quality standard
such problem is the use of Cyclic Redundancy and brand reputation [5].
Checks (CRC). In most of the cases, CRC are One important aspect relating to CMOS
manually designed for each system by engi- shrinking is the number and potential impact
neers with limited dependability skills. Con- of accidental faults, such as single/multiple
sequently, the reusability of resulting mecha- bit-ips and burst errors, in inter IP core dig-
nisms is limited and their proneness to design ital data communications. Cyclic redundancy
bugs is not negligible. This paper investigates checks (CRC) [7, 14] are privileged means to
the use of metaprogramming techniques to de- tolerate such faults. Although other fault-
sign generic and reusable CRC that can be tolerant mechanisms such as error-correcting
automatically specialised through open com- codes can also solve the problem, the informa-
pilation attending to the particular features of tion and computational overhead they induce
each IP core design. The various parametrisa- is bigger than the one related to CRC [12].
tion decisions that must be considered to ob- The problem handled in this paper is how
tain CRC instances with a good balance be- to develop and deploy a CRC strategy to pro-
tween performance and dependability are also mote their reusability in IP core-based HW
reported and experimentally assessed. designs. The idea is to enable the use of such
mechanisms even to designers with limited de-
1 Introduction pendability skills, which are those that are
more prone to introduce a bug in the design of
Miniaturisation in electronics has enabled the fault tolerance mechanisms. This goal yields
production of more powerful and tiny HW to consider design mechanisms promoting a
designs whose complexity and time-to-market clear separation between the functional and
are handled through the use of o-the-shelf non-functional (in our case CRC-based fault
building blocks, named IP cores. However, tolerance) features of each IP core [11].

To cope with such separation of concerns,
This work has been cofunded by Spanish MICINN
SEMSECAP project (TIN-2009-13825) and by UPV the considered CRC strategy has been de-
GIMCS project (PAID-06-10-2388). signed in a generic way as a metaprogram,

119
Sesión IV: Sistemas Tolerantes a Errores/Test

applying on IP cores' HDL (Hardware De- on whether a clock line is transmitted along-
scription Language) models a set of analy- side the data line. Likewise, control blocks
sis and transformation rules to produce spe- can command checksums to be sent following,
cic CRC instances suitable for each IP-core. among others, i) a frame size strategy, which
The reusability of such metaprograms is pro- transmits the checksum after a xed number
moted through the use of open compilation of data words, ii) a ags strategy, which trans-
tools [9, 10, 8], which enables the automatic mits the checksum after an end-of-frame ag,
deployment of the metaprograms on concrete or iii) a time-out strategy, which transmits the
IP core models. Finally, fault injection tech- checksum after a xed period of inactivity.
niques are used to assess the level of fault tol- The degree of resilience provided by the
erance attained by resulting HW designs. mechanism will depend on the generator poly-
The rest of the paper structures as follows. nomial [12, 3]. Koopman studies the theoreti-
Section 2 presents the context of this research. cal properties of a huge set of polynomials in
Section 3 reports on the design of a CRC [4], and highlights the importance of parame-
metaprogram, which is later deployed on real ters like Hamming Distance (HD) -minimum
case study in Section 4. Results and conclu- amount of bits to be changed to miss detec-
sions are nally detailed in Sections 5 and 6. tion for a given message size-, and Hamming
Weight (HW) -number of combinations for a
2 Research context specic amount of wrong bits in a xed mes-
sage size which would go undetected. The rst
This section presents the basic notions about HW 6= 0 is the HD for that message.
CRC mechanisms, metaprogramming of de- Balancing the error detection capabilities
pendability mechanisms and their automatic and data overhead of a CRC, in dierent con-
deployment using open compilation. texts of use, will require the parametrisation
of the polynomial in use and the message size.
2.1 CRCs and fault tolerance In the root of this paper, our research is
focused on deploying CRC detection mecha-
CRC tted transmitters send original data nisms on serial asynchronous frame size based
with extra bits calculated from applying a gen- components. There are some noteworthy con-
erator polynomial. In the receiver an identical straints to be taken into account: i) the se-
calculation is performed to the original+extra rial asynchronous frame size strategy has been
bits received to obtain a match signal indicat- chosen due to its simplicity and common use
ing no bit has been altered. If the result is in UART/USART protocols, but an exten-
negative, the packet has to be retransmitted. sion to include other strategies is present in
Dierent transmission strategies are candi- our roadmap, ii) only the transmitter is im-
date to include CRCs (see Figure 1). They are plemented, iii) an enable input signal must
classied into serial or parallel i/o structures. be activated every clock cycle data has to be
Further on, serial structures comprise syn- sent, and iv) no start/end bits are supported
chronous or asynchronous modes, depending yet. The aforementioned mechanism will be
dened as a metaprogram.
Frame size
2.2 Metaprograms and open compilation
Asynchronous Flags

Time out Open compilation approaches enable the ap-


Serial
Frame size
plication of program source to source transfor-
Crc strategies
mations. Those programs driving such trans-
formation process are called metaprograms.
Parallel Synchronous Flags
Time out
For the sake of illustrating the concepts
of open compilation and metaprogramming
Figure 1: Transmission CRC strategies with a concrete example, let us consider the

120
JCRA 2011 | Tenerife 7-9 de Septiembre

Input HDL
Model
2. Input code parsing 1. Input comments parsing
(HDL to AST conversion) (Parameter extraction)
4. Statement analysis and transformation
AST Parser Directives M
Parser e
Default Meta-program
t
3. Apply Mechanisms (AST) a (Neutral code transformations)
i
AST representation of n
the input HDL model t
AST HandleStatement(AST in){
e
5. Customized AST r
return in;
f }
a
Customized AST c specializes …
e
representation of
User-defined Meta-programs
the input HDL model saved at… (Transformations for
6. Output file generation fault tolerance or security)
(AST to HDL conversion) AST HandleStatement(AST in){
AST out =
Analyze_and_Customize (in);
Output HDL CODESH Library return out;
(Metaprograms and
Model templates)
}

Figure 2: CODESH workow

CODESH tool, which provides an open COm- techniques. Next section describes how to
pilation process for the design of DEpendable metaprogram a CRC strategy.
and SEcure Hdl-based systems.

The workow of this tool is depicted in Fig- 3 CRC as a metaprogram


ure 2. First, the comments grammar parses The general procedure designers should follow
the input le extracting any CODESH com- to develop new fault tolerance/security strate-
mands and parameters it may contain. After gies as metaprograms for CODESH comprises
that, the syntax grammar parses the code and three dierent phases: phase 1) generating
creates a structured representation -abstract the required infrastructure, phase 2) generat-
syntax tree (AST) - of that le. The AST
ing the new protected component by encap-
is then walked through and the identied sulating the original component and the gen-
language statements are sent to the selected erated infrastructure, and phase 3) integrating
metaprogram, which analyses and transforms the protected component into the given design.
them according to its parametrisation and Figure 3 details the model of the considered
code. If no specic transformation is dened, input component (see Original component ).
then the statement is not modied. CODESH
embeds by default a neutral metaprogram pro- 3.1 Phase 1: Infrastructure generation
viding no transformations to input HDL mod-
els. Those metaprograms in the Metapro- Following a bottom-up process, the deploy-
gram Library change such default behaviour, ment of a CRC mechanism rst requires the
by instrumenting HDL models to deploy non- generation of some basic infrastructure. As
functional (in our case fault tolerance and se- depicted in Figure 3, the creation of a CRC-
curity) strategies. For each statement, the protected component involves the develop-
metaprogram applies the required transforma- ment of a suitable CRC generator block, a
tions and returns the modied AST version custom control block, and some combinational
of the statement to the open compiler, which logic.
translates it back to the considered model. Reuse of tested blocks is a convenient
This is basically how the metaprogram is able and robust design technique and, thus, ma-
to produce a fault-tolerant/secure version of ture serial and parallel structures have been
an input HDL model using open compilation picked for the CRC generator. These blocks

121
Sesión IV: Sistemas Tolerantes a Errores/Test

CRC_protected component is generated, for


Crc_protected component
Crc_adapted block
the CRC_adapted block to process the output
Crc generator
of the original component. The encapsulation
rst_i
clk_i of these elements is performed using a set of
clken_i
data_i match_o
rules as shown in the example in Figure 4.
Original Component
flush_i crc_o
reset tx_over_run
txclk tx_buf_empty 3.3 Phase 3: Component integration
ld_tx_data tx_out Control block

Finally those instances of the original compo-


tx_data tx_empty
tx_enable rst_i tx_enable_o
tx_clk_i tx_crc_en_o
tx_enable_i flush_o nent to be protected must be replaced by in-
tx_empty_i out_sel_o
stances of the CRC_protected component ob-
tained in the previous phase. Likewise, the
new component declaration must be included
Combinational logic

in the aected component. This procedure is


Out_sel_cn tx_out_o
Crc_cn
tx_out_i
represented in Figure 5.

3.4 Bridging mechanism deployment and


Figure 3: A CRC-protected block structure show-
VHDL coding
ing relevant interconnections
In order to simplify the deployment of the pre-
sented analysis and transformation processes,
have been downloaded from the open source the behaviour of CODESH is parametrised by
OpenCores website [6] and included in the inserting specic tags into the HDL code to
CODESH library, however any valid imple- provide CODESH with all the required in-
mentation can be used. formation. So as not to interfere with syn-
Conversely the control block, which is in thesizers, these tags are formatted as special
charge of generating control signals to drive HDL comments (see Figure 5, Automatic pa-
the CRC generator block and the output com- rameter extraction). The required informa-
binational logic, greatly depends on the kind tion is the name of relevant ports, strategy
of transmitter being protected. This is why of implementation, generator polynomial, ini-
it must be custom generated during the de- tialisation value, type of reset, and additional
ployment of the CRC strategy. CODESH pro- strategy-dependent parameters.
vides two dierent paths for metaprograms to
An example of application is shown in Fig-
generate custom blocks: i) starting them from
ure 5, where the original HDL module includes
scratch, or the chosen ii) using pre-designed
all the information required to make the out-
templates and customise them attending to
put of a given component CRC-protected.
the input commands. New metaprogram rules
may later adapt the control block to accept
start/stop bits or dierent transmit enable 4 Case study
schemes. Combinational logic to control out-
put is also custom generated. This section shows how the proposed approach
applies on the transmitter section of a simple
3.2 Phase 2: Component encapsulation UART providing serial asynchronous commu-
nication capabilities. Next sections describe
After generating the required infrastructure, it the cores under study, the selected test bed
must be encapsulated with the original com- and its parametrisation.
ponent into a new CRC-protected component
following the schema depicted in Figure 3. 4.1 CRC-protected UART transmitter
The CRC generator, custom control block
and combinational logic are rst joined within The UART transmitter, downloaded from
a new CRC_adapted block. Then, a new OpenCores [6], was modied to i) introduce

122
JCRA 2011 | Tenerife 7-9 de Septiembre

Encapsulated uart_buf_crc1021.vhd
(CRC_protected: Original+CRC_adapted)
Original vhd module Metaprogram Rules library ieee;
--* CODESH ON Metaprogram input use ieee.std_logic_1164.all;
--* CODESH (...) parameters Generation Rule g1: use ieee.numeric_std.all;
--* CODESH OFF Step 1 - Original Compo-
(...) COMPONENT => uart_buf entity uart_buf_crc1021 is
INSTANCE => UART1 nent entity elements fetch port (
OUTPUT_DATA_PORT => tx_out Step 2 – Customisation of reset, txclk, ld_tx_data, tx_enable : in std_logic;
Parameter ENABLE_PORT => tx_enable tx_data : in std_logic_vector(7 downto 0);
EMPTY_PORT => tx_empty entity name & introduction tx_out, tx_empty : out std_logic;
extraction CLOCK_PORT => txclk of other elements tx_over_run tx_buf_empty: out std_logic;);
performed RESET_PORT => reset end uart_buf_crc1021;
STRATEGY => FSser Generation