Máquinas de estados Finitos Virtuales · 25 de septiembre de 2012 Tribunal: • Manuel Jesús...
Transcript of Máquinas de estados Finitos Virtuales · 25 de septiembre de 2012 Tribunal: • Manuel Jesús...
MÁQUINAS DE ESTADOS VIRTUALES FINITOS
Una contribución a la implementación electrónica de máquinas de estados
Lectura de tesis doctoral
Director:
• José Luis Guisado Lizar
(Univ. de Sevilla)
25 de septiembre de 2012
Tribunal:
• Manuel Jesús Bellido Díaz
(Univ. de Sevilla)
• Juan Antonio Gómez Pulido
(Univ. de Extremadura)
• José María Rodríguez Corral
(Univ. de Cádiz)
• Pedro Guerra Gutiérrez
(Univ. de Politécnica de Madrid)
• Daniel Cagigas Muñiz
(Univ. de Sevilla)
Autor:
• Raouf Senhadji Navarro
CONTENIDO
Introducción
Caracterización de implementaciones basadas en
memoria de FSM sobre FPGA
Máquinas de Estados Virtuales Finitos (FVSM)
Implementación de FVSM en FPGA
Generación automática de implementaciones FVSM
Comparativa entre implementaciones FSM y FVSM
Otras aportaciones a la implementación basada en
memoria de FSM
Conclusiones y trabajo futuro
2
CONTENIDO
Introducción
Caracterización de implementaciones basadas en
memoria de FSM sobre FPGA
Máquinas de Estados Virtuales Finitos (FVSM)
Implementación de FVSM en FPGA
Generación automática de implementaciones FVSM
Comparativa entre implementaciones FSM y FVSM
Otras aportaciones a la implementación basada en
memoria de FSM
Conclusiones y trabajo futuro
2
MOTIVACIÓN
Una máquina de estados finitos (FSM) es un modelo que permite describir el comportamiento de un circuito secuencial
Investigación en la implementación electrónica de FSM
Una implementación eficiente involucra problemas computacionalmente complejos
Nuevos retos: Diseñar hardware para tareas tradicionalmente implementadas por software con objeto de alcanzar las altas prestaciones demandadas
Pueden transformarse en FSM con un número elevado de estados
El reconocimiento de patrones o el rutado de paquetes en redes
Nuevos recursos y capacidades en las FPGA
Importante crecimiento de los recursos de memoria (94% SoC)
Arquitecturas basadas en memoria
Herramientas para mapear lógica en bloques de memoria
3
DEFINICIÓN DE UNA FSM
Una FSM se define como una 6-tupla (X, Y, S, h, g, s0) donde:
X es un conjunto finito de variables de entrada
Y es un conjunto finito de variables de salida
S es un conjunto finito de estados
h : S × X → S es la función de transición
g : S × X → Y es la función de salida (FSM de Mealy)
g : S → Y en una FSM de Moore
s0 ∈ S es el estado inicial
4
IMPLEMENTACIÓN BASADA EN MEMORIA DE FSM
Ventajas respecto a las implementaciones convencionales:
Área Al usar bloques se liberan LUT
Con RAM distribuida se redujo la ocupación en LUT
Velocidad La velocidad en un único bloque es independiente
de la complejidad de la FSM
Con RAM de bloques se mejoró la velocidad
Consumo de potencia La memoria puede deshabilitarse en los bucles,
reduciendo el consumo de potencia
Capacidad de “reconfiguración” Puede usarse en dispositivos sin DPR
No requiere cambiar el place&routing
Portabilidad
Menor tamaño de datos y latencia de reconfiguración
Cálculo dinámico de la “reconfiguración”
Implementación
basada en memoria
5
CONTENIDO
Introducción
Caracterización de implementaciones basadas en
memoria de FSM sobre FPGA
Máquinas de Estados Virtuales Finitos (FVSM)
Implementación de FVSM en FPGA
Generación automática de implementaciones FVSM
Comparativa entre implementaciones FSM y FVSM
Otras aportaciones a la implementación basada en
memoria de FSM
Conclusiones y trabajo futuro
6
IMPLEMENTACIONES BASADAS EN MEMORIA
Una RAM se construye con:
Elementos de memoria
(bloques o LUTs)
Multiplexores (Lectura)
Decodificador (Escritura)
Características específicas de las FPGA:
Bloque de memoria
LUT
Multiplexores empotrados
Lógica de decodificación
Interconexión de bloques adyacentes
7
CARACTERIZACIÓN DE IMPLEMENTACIONES
RAM distribuida
Número de entradas Número de salidas Número de bits de codificación de estados
Número de entradas Número de salidas Número de bits de codificación de estados
Fre
cu
en
cia
(M
Hz)
Fre
cu
en
cia
(M
Hz)
Fre
cu
en
cia
(M
Hz)
Núm
ero
de
LU
T
Núm
ero
de
LU
T
Núm
ero
de
LU
T
8
CARACTERIZACIÓN DE IMPLEMENTACIONES
RAM distribuida
Número de entradas Número de salidas Número de bits de codificación de estados
Número de entradas Número de salidas Número de bits de codificación de estados
5%
Fre
cu
en
cia
(M
Hz)
Fre
cu
en
cia
(M
Hz)
Fre
cu
en
cia
(M
Hz)
Núm
ero
de
LU
T
Núm
ero
de
LU
T
Núm
ero
de
LU
T
8
CARACTERIZACIÓN DE IMPLEMENTACIONES
RAM distribuida
Número de entradas Número de salidas Número de bits de codificación de estados
Número de entradas Número de salidas Número de bits de codificación de estados
Fre
cu
en
cia
(M
Hz)
Fre
cu
en
cia
(M
Hz)
Fre
cu
en
cia
(M
Hz)
Núm
ero
de
LU
T
Núm
ero
de
LU
T
Núm
ero
de
LU
T
17%
8
CARACTERIZACIÓN DE IMPLEMENTACIONES
RAM de bloques
Número de entradas Número de salidas Número de bits de codificación de estados
Número de entradas Número de salidas Número de bits de codificación de estados
Fre
cu
en
cia
(M
Hz)
Fre
cu
en
cia
(M
Hz)
Fre
cu
en
cia
(M
Hz)
Núm
ero
de
recu
rsos
Núm
ero
de
recu
rsos
Núm
ero
de
recu
rsos
9
CARACTERIZACIÓN DE IMPLEMENTACIONES
RAM de bloques
Número de entradas Número de salidas Número de bits de codificación de estados
Número de entradas Número de salidas Número de bits de codificación de estados
45%
Fre
cu
en
cia
(M
Hz)
Fre
cu
en
cia
(M
Hz)
Fre
cu
en
cia
(M
Hz)
Núm
ero
de
recu
rsos
Núm
ero
de
recu
rsos
Núm
ero
de
recu
rsos
9
CARACTERIZACIÓN DE IMPLEMENTACIONES
Las características específicas de la FPGA influyen
en las prestaciones
Crecimiento lineal de recursos y mantenimiento de
la velocidad para
Salidas
Crecimiento exponencial de recursos y
disminución de velocidad para
Entradas
Número de bits de codificación de estados
Dependencia directa entre el tiempo de respuesta
de la RAM y su profundidad (complejidad del MUX
en camino crítico)
Se requieren técnicas para mejorar las
prestaciones
En diseños de bajo consumo, incluso con bloques
grandes, se reduce significativamente la velocidad,
debido a las configuraciones de bloques requeridas
Optimización en
consumo de potencia
Optimización en velocidad
Conclusiones
10
CONTENIDO
Introducción
Caracterización de implementaciones basadas en
memoria de FSM sobre FPGA
Máquinas de Estados Virtuales Finitos (FVSM)
Implementación de FVSM en FPGA
Generación automática de implementaciones FVSM
Comparativa entre implementaciones FSM y FVSM
Otras aportaciones a la implementación basada en
memoria de FSM
Conclusiones y trabajo futuro
11
MÁQUINAS DE ESTADOS VIRTUALES FINITOS
Modelo inspirado en la jerarquía de memoria
Aprovechamiento de la localidad en los accesos a los estados
Jerarquía de dos niveles: Memoria Principal y Memoria Secundaria
Puede verse como un sistema de caché con pre-búsqueda (sin fallos)
Terminología básica
Estado virtual (sk)
Marco de estado (fk)
Instancia de máquina (ik)
Estado de actualización (sk)
12
MÁQUINAS DE ESTADOS VIRTUALES FINITOS
Modelo inspirado en la jerarquía de memoria
Aprovechamiento de la localidad en los accesos a los estados
Jerarquía de dos niveles: Memoria Principal y Memoria Secundaria
Puede verse como un sistema de caché con pre-búsqueda (sin fallos)
Terminología básica
Estado virtual (sk)
Marco de estado (fk)
Instancia de máquina (ik)
Estado de actualización (sk)
i0
12
MÁQUINAS DE ESTADOS VIRTUALES FINITOS
Modelo inspirado en la jerarquía de memoria
Aprovechamiento de la localidad en los accesos a los estados
Jerarquía de dos niveles: Memoria Principal y Memoria Secundaria
Puede verse como un sistema de caché con pre-búsqueda (sin fallos)
Terminología básica
Estado virtual (sk)
Marco de estado (fk)
Instancia de máquina (ik)
Estado de actualización (sk)
i1
12
MÁQUINAS DE ESTADOS VIRTUALES FINITOS
Modelo inspirado en la jerarquía de memoria
Aprovechamiento de la localidad en los accesos a los estados
Jerarquía de dos niveles: Memoria Principal y Memoria Secundaria
Puede verse como un sistema de caché con pre-búsqueda (sin fallos)
Terminología básica
Estado virtual (sk)
Marco de estado (fk)
Instancia de máquina (ik)
Estado de actualización (sk)
f0
f1
f2
f3 i0
12
MÁQUINAS DE ESTADOS VIRTUALES FINITOS
Modelo inspirado en la jerarquía de memoria
Aprovechamiento de la localidad en los accesos a los estados
Jerarquía de dos niveles: Memoria Principal y Memoria Secundaria
Puede verse como un sistema de caché con pre-búsqueda (sin fallos)
Terminología básica
Estado virtual (sk)
Marco de estado (fk)
Instancia de máquina (ik)
Estado de actualización (sk)
f0
f1
f3
f2
i0
12
MÁQUINAS DE ESTADOS VIRTUALES FINITOS
Modelo inspirado en la jerarquía de memoria
Aprovechamiento de la localidad en los accesos a los estados
Jerarquía de dos niveles: Memoria Principal y Memoria Secundaria
Puede verse como un sistema de caché con pre-búsqueda (sin fallos)
Terminología básica
Estado virtual (sk)
Marco de estado (fk)
Instancia de máquina (ik)
Estado de actualización (sk)
f0
f1
f3
s2
f2
i0
12
MÁQUINAS DE ESTADOS VIRTUALES FINITOS
Modelo inspirado en la jerarquía de memoria
Aprovechamiento de la localidad en los accesos a los estados
Jerarquía de dos niveles: Memoria Principal y Memoria Secundaria
Puede verse como un sistema de caché con pre-búsqueda (sin fallos)
Terminología básica
Estado virtual (sk)
Marco de estado (fk)
Instancia de máquina (ik)
Estado de actualización (sk)
f0
f3
f1
f2 i1
12
MÁQUINAS DE ESTADOS VIRTUALES FINITOS
Modelo inspirado en la jerarquía de memoria
Aprovechamiento de la localidad en los accesos a los estados
Jerarquía de dos niveles: Memoria Principal y Memoria Secundaria
Puede verse como un sistema de caché con pre-búsqueda (sin fallos)
Terminología básica
Estado virtual (sk)
Marco de estado (fk)
Instancia de máquina (ik)
Estado de actualización (sk)
f0
f3
f1
f2 i1
12
MÁQUINAS DE ESTADOS VIRTUALES FINITOS
Modelo inspirado en la jerarquía de memoria
Aprovechamiento de la localidad en los accesos a los estados
Jerarquía de dos niveles: Memoria Principal y Memoria Secundaria
Puede verse como un sistema de caché con pre-búsqueda (sin fallos)
Terminología básica
Estado virtual (sk)
Marco de estado (fk)
Instancia de máquina (ik)
Estado de actualización (sk)
s2
f0
f3
f1
f2 i1
12
MÁQUINAS DE ESTADOS VIRTUALES FINITOS
Modelo inspirado en la jerarquía de memoria
Aprovechamiento de la localidad en los accesos a los estados
Jerarquía de dos niveles: Memoria Principal y Memoria Secundaria
Puede verse como un sistema de caché con pre-búsqueda (sin fallos)
Terminología básica
Estado virtual (sk)
Marco de estado (fk)
Instancia de máquina (ik)
Estado de actualización (sk)
f0
f1
f3
f2
i0
12
MÁQUINAS DE ESTADOS VIRTUALES FINITOS
Modelo inspirado en la jerarquía de memoria
Aprovechamiento de la localidad en los accesos a los estados
Jerarquía de dos niveles: Memoria Principal y Memoria Secundaria
Puede verse como un sistema de caché con pre-búsqueda (sin fallos)
Terminología básica
Estado virtual (sk)
Marco de estado (fk)
Instancia de máquina (ik)
Estado de actualización (sk)
f0
f1
f3
f2
i0
12
DEFINICIÓN FORMAL DE UNA FVSM
Definimos una FVSM como una 9-tupla (X, Y, F, I, t, o, u, i0, f0) donde:
X es un conjunto finito de variables de entrada
Y es un conjunto finito de variables de salida
F es un conjunto finito de marcos de estado
I es un conjunto de instancias de máquina
t : I × F × X → F es la función de transición
o : I × F × X → Y es la función de salida (FVSM de Mealy)
o: I × F → Y en una FVSM de Moore
u: I × F → I es la función de actualización
i0 ∈ I es la instancia inicial
f0 ∈ F es el marco inicial
13
EQUIVALENCIA ENTRE FVSM Y FSM
Decimos que una FVSM y una FSM son equivalentes si para cualquier secuencia de entradas se obtiene en ambas la misma salida
Condición de suficiencia: Son equivalentes si existe una función parcial w: I × F → S (denominada función de virtualización) para la que se cumple que
w(i0, f0) = s0
y que, para todo estado alcanzable sk y entrada x, existe una instancia ip y un marco fq para los que se cumplen las siguientes condiciones:
w(ip, fq) = sk
w(u(ip, fq), t(ip, fq,x)) = h(sk, x)
o(ip, fq, x) = g(sk, x)
14
EQUIVALENCIA ENTRE FVSM Y FSM. EJEMPLO
FVSM
FSM
15
EQUIVALENCIA ENTRE FVSM Y FSM. EJEMPLO
FVSM
FSM
15
EQUIVALENCIA ENTRE FVSM Y FSM. EJEMPLO
FVSM
FSM
15
EQUIVALENCIA ENTRE FVSM Y FSM. EJEMPLO
FVSM
FSM
15
EQUIVALENCIA ENTRE FVSM Y FSM. EJEMPLO
FVSM
FSM
15
EQUIVALENCIA ENTRE FVSM Y FSM. EJEMPLO
FVSM
FSM
15
EQUIVALENCIA ENTRE FVSM Y FSM. EJEMPLO
FVSM
FSM
15
EQUIVALENCIA ENTRE FVSM Y FSM. EJEMPLO
FVSM
FSM
15
EQUIVALENCIA ENTRE FVSM Y FSM. EJEMPLO
FVSM
FSM
15
CONTENIDO
Introducción
Caracterización de implementaciones basadas en
memoria de FSM sobre FPGA
Máquinas de Estados Virtuales Finitos (FVSM)
Implementación de FVSM en FPGA
Generación automática de implementaciones FVSM
Comparativa entre implementaciones FSM y FVSM
Otras aportaciones a la implementación basada en
memoria de FSM
Conclusiones y trabajo futuro
16
ARQUITECTURA FVSM
La memoria principal contiene la instancia actual
Genera el próximo estado y la salida
Gestiona los cambios de instancia
RAM de doble puerto simple
La memoria secundaria contiene todas las actualizaciones de
instancia y las direcciones donde éstas se escriben en memoria
principal
17
ARQUITECTURA FVSM
La memoria principal contiene la instancia actual
Genera el próximo estado y la salida
Gestiona los cambios de instancia
RAM de doble puerto simple
La memoria secundaria contiene todas las actualizaciones de
instancia y las direcciones donde éstas se escriben en memoria
principal
17
ARQUITECTURA FVSM
La memoria principal contiene la instancia actual
Genera el próximo estado y la salida
Gestiona los cambios de instancia
RAM de doble puerto simple
La memoria secundaria contiene todas las actualizaciones de
instancia y las direcciones donde éstas se escriben en memoria
principal
17
ARQUITECTURA FVSM. IMPLEMENTACIÓN
La memoria principal es una RAM de doble puerto asimétrico con
configuración primero-escritura
La profundidad mínima en escritura ω (en bits) de los recursos de
memoria influye en el número máximo de marcos k (en bits) que pueden
ser modificados en un cambio de instancia
Se habla de ω-recursos
En Xilinx Spartan-3, ω=4 para LUT y ω=9 para bloques
El número total de marcos r (en bits) influye también en k
Se impone la siguiente restricción:
k ≤ r – ω
ω
Configuración en lectura
Configuración en escritura
18
ARQUITECTURA FVSM. CAMBIOS DE INSTANCIA
Dirección
memoria
Datos
ai dai
0 s0, s5 0
1 s3, s4 0
Memoria secundaria
Memoria principal
Secuencia de
actualización (2 ciclos)
Selección de
actualización de
instancia
Habilitación de
actualización de
instancia
Pipeline
(1 actualización/ciclo)
Implementabilidad de
una FVSM en la
arquitectura propuesta
FVSM
FSM
19
ARQUITECTURA FVSM. CAMBIOS DE INSTANCIA
Dirección
memoria
Datos
ai dai
0 s0, s5 0
1 s3, s4 0
Memoria secundaria
Memoria principal
Secuencia de
actualización (2 ciclos)
Selección de
actualización de
instancia
Habilitación de
actualización de
instancia
Pipeline
(1 actualización/ciclo)
Implementabilidad de
una FVSM en la
arquitectura propuesta
FVSM
FSM
19
ARQUITECTURA FVSM. CAMBIOS DE INSTANCIA
Dirección
memoria
Datos
ai dai
0 s0, s5 0
1 s3, s4 0
Memoria secundaria
Memoria principal
Secuencia de
actualización (2 ciclos)
Selección de
actualización de
instancia
Habilitación de
actualización de
instancia
Pipeline
(1 actualización/ciclo)
Implementabilidad de
una FVSM en la
arquitectura propuesta
FVSM
FSM
19
ARQUITECTURA FVSM. CAMBIOS DE INSTANCIA
Dirección
memoria
Datos
ai dai
0 s0, s5 0
1 s3, s4 0
Memoria secundaria
Memoria principal
Secuencia de
actualización (2 ciclos)
Selección de
actualización de
instancia
Habilitación de
actualización de
instancia
Pipeline
(1 actualización/ciclo)
Implementabilidad de
una FVSM en la
arquitectura propuesta
i1
FVSM
FSM
19
ARQUITECTURA FVSM. CAMBIOS DE INSTANCIA
Dirección
memoria
Datos
ai dai
0 s5, s0 0
1 s4, s3 0
Memoria secundaria
Memoria principal
Secuencia de
actualización (2 ciclos)
Selección de
actualización de
instancia
Habilitación de
actualización de
instancia
Pipeline
(1 actualización/ciclo)
Implementabilidad de
una FVSM en la
arquitectura propuesta
s4 s3
1
FVSM
FSM
19
ARQUITECTURA FVSM. CAMBIOS DE INSTANCIA
Dirección
memoria
Datos
ai dai
0 s5, s0 0
1 s4, s3 0
Memoria secundaria
Memoria principal
Secuencia de
actualización (2 ciclos)
Selección de
actualización de
instancia
Habilitación de
actualización de
instancia
Pipeline
(1 actualización/ciclo)
Implementabilidad de
una FVSM en la
arquitectura propuesta
FVSM
FSM
19
ARQUITECTURA FVSM. CAMBIOS DE INSTANCIA
Secuencia de
actualización (2 ciclos)
Selección de
actualización de
instancia
Habilitación de
actualización de
instancia
Pipeline
(1 actualización/ciclo)
Implementabilidad de
una FVSM en la
arquitectura propuesta
20
ARQUITECTURA FVSM. CAMBIOS DE INSTANCIA
Secuencia de
actualización (2 ciclos)
Selección de
actualización de
instancia
Habilitación
actualización de
instancia
Pipeline
(1 actualización/ciclo)
Implementabilidad de
una FVSM en la
arquitectura propuesta
21
VENTAJAS DE LAS IMPLEMENTACIONES FVSM
Velocidad
Influencia de los parámetros en la profundidad
Memoria principal
Número de entradas
Número de marcos
Memoria secundaria
Número de instancias (o actualizaciones de instancia)
La profundidad de ambas memorias se reducen con respecto a la de
una FSM
Las instancias tienen menos estados que la FSM
Existen menos instancias que estados en la FSM
Las entradas no afectan a la profundidad de la memoria
secundaria
La memoria con mayor profundidad impone la velocidad de la
FVSM
Objetivo: equilibrar la profundidad de ambas memorias
22
OTRAS VENTAJAS DE LAS IMPLEMENTACIONES FVSM
Consumo de potencia
La memoria secundaria puede ser deshabilitada siempre que
no haya cambios de instancia
Capacidad de reconfiguración
Las distintas instancias pueden ser “reconfiguradas” en la
memoria secundaria mientras la principal sigue operando
correctamente
23
Influencia en área y velocidad del: Número de entradas
Número de salidas
Número de bits de codificación de marcos
Número de bits de codificación de actualizaciones de instancia
Número de bits de codificación de marcos por actualización de instancia
CARACTERIZACIÓN DE IMPLEMENTACIONES FVSM 24
Influencia en área y velocidad del:
Número de entradas Número de salidas
Número de bits de codificación de marcos
Número de bits de codificación de actualizaciones de instancia
Número de bits de codificación de marcos por actualización de instancia
CARACTERIZACIÓN DE IMPLEMENTACIONES FVSM
Número de entradas Número de entradas
Fre
cu
en
cia
(M
hz)
Nú
me
ro d
e L
UT
Influye en la profundidad de la principal
Influye en el ancho de la secundaria
24
Influencia en área y velocidad del: Número de entradas
Número de salidas Número de bits de codificación de marcos
Número de bits de codificación de actualizaciones de instancia
Número de bits de codificación de marcos por actualización de instancia
CARACTERIZACIÓN DE IMPLEMENTACIONES FVSM
Número de salidas Número de salidas
Fre
cu
en
cia
(M
hz)
Nú
me
ro d
e L
UT
25
Influye en el ancho de la principal
Influye en el ancho de la secundaria
Influencia en área y velocidad del: Número de entradas
Número de salidas
Número de bits de codificación de marcos Número de bits de codificación de actualizaciones de instancia
Número de bits de codificación de marcos por actualización de instancia
CARACTERIZACIÓN DE IMPLEMENTACIONES FVSM
Número de bits de codificación de marcos Número de bits de codificación de marcos
Fre
cu
en
cia
(M
hz)
Nú
me
ro d
e L
UT
26
Influye en la profundidad de la principal
Influencia en área y velocidad del: Número de entradas
Número de salidas
Número de bits de codificación de marcos
Número de bits de codificación de actualizaciones de instancia Número de bits de codificación de marcos por actualización de instancia
CARACTERIZACIÓN DE IMPLEMENTACIONES FVSM
Núm. de bits de codificación de actualizaciones de instancia Núm. de bits de codificación de actualizaciones de instancia
Fre
cu
en
cia
(M
hz)
Nú
me
ro d
e L
UT
27
Influye en la profundidad de la secundaria
Influencia en área y velocidad del: Número de entradas
Número de salidas
Número de bits de codificación de marcos
Número de bits de codificación de actualizaciones de instancia
Número de bits de codificación de marcos por actualización de instancia
CARACTERIZACIÓN DE IMPLEMENTACIONES FVSM
Núm. de bits de codificación de marcos por actualización Núm. de bits de codificación de marcos por actualización
Fre
cu
en
cia
(M
hz)
Nú
me
ro d
e L
UT
28
Influye en el ancho de la secundaria
CARACTERIZACIÓN DE IMPLEMENTACIONES FVSM
Velocidad
Un número elevado de entradas facilita el equilibrado
El impacto del número de estados en la velocidad viene amortiguado por la jerarquía de memoria
El número de bits de codificación de marcos por actualización de instancia no influye en la velocidad
Se elige el valor máximo que permite la restricción impuesta por los ω-recursos
Área
Memoria secundaria con un número de recursos similar a la FSM (con excepción de los bits de control y redundancia de estados)
La memoria principal supone un coste adicional
Los multiplexores y decodificadores de las FVSM son más simples
Conclusiones
29
CONTENIDO
Introducción
Caracterización de implementaciones basadas en
memoria de FSM sobre FPGA
Máquinas de Estados Virtuales Finitos (FVSM)
Implementación de FVSM en FPGA
Generación automática de implementaciones FVSM
Comparativa entre implementaciones FSM y FVSM
Otras aportaciones a la implementación basada en
memoria de FSM
Conclusiones y trabajo futuro
30
VIRTUALIZACIÓN: DE UNA FSM A UNA FVSM (I)
Conjunto generador A S
El conjunto generador contiene los que serán estados de actualización
Conjuntos de estados virtuales D = {Dj}
Cada conjunto de estados virtuales contiene los estados de una
instancia
A = {s1, s2}
31
Conjunto generador A S
El conjunto generador contiene los que serán estados de actualización
Conjuntos de estados virtuales D = {Dj}
Cada conjunto de estados virtuales contiene los estados de una
instancia
VIRTUALIZACIÓN: DE UNA FSM A UNA FVSM (I)
G0
A = {s1, s2}
s1 ∈ A; D0 = {}
31
Conjunto generador A S
El conjunto generador contiene los que serán estados de actualización
Conjuntos de estados virtuales D = {Dj}
Cada conjunto de estados virtuales contiene los estados de una
instancia
VIRTUALIZACIÓN: DE UNA FSM A UNA FVSM (I)
G0
A = {s1, s2}
s1 ∈ A; D0 = {s2}
31
Conjunto generador A S
El conjunto generador contiene los que serán estados de actualización
Conjuntos de estados virtuales D = {Dj}
Cada conjunto de estados virtuales contiene los estados de una
instancia
VIRTUALIZACIÓN: DE UNA FSM A UNA FVSM (I)
G0
A = {s1, s2}
s1 ∈ A; D0 = {s2, s5}
31
Conjunto generador A S
El conjunto generador contiene los que serán estados de actualización
Conjuntos de estados virtuales D = {Dj}
Cada conjunto de estados virtuales contiene los estados de una
instancia
VIRTUALIZACIÓN: DE UNA FSM A UNA FVSM (I)
G0
A = {s1, s2}
s1 ∈ A; D0 = {s2, s5, s0}
31
VIRTUALIZACIÓN: DE UNA FSM A UNA FVSM (I)
G0
Conjunto generador A S
El conjunto generador contiene los que serán estados de actualización
Conjuntos de estados virtuales D = {Dj}
Cada conjunto de estados virtuales contiene los estados de una
instancia
A = {s1, s2}
s1 ∈ A; D0 = {s2, s5, s0, s1}
31
Conjunto generador A S
El conjunto generador contiene los que serán estados de actualización
Conjuntos de estados virtuales D = {Dj}
Cada conjunto de estados virtuales contiene los estados de una
instancia
VIRTUALIZACIÓN: DE UNA FSM A UNA FVSM (I)
A = {s1, s2}
s2 ∈ A; D1 = {s2, s3, s4, s1}
G1
31
VIRTUALIZACIÓN: DE UNA FSM A UNA FVSM (I)
A = {s1, s2}
s2 ∈ A; D1 = {s2, s3, s4, s1}
s1 ∈ A; D0 = {s2, s5, s0, s1}
Conjunto generador A S
El conjunto generador contiene los que serán estados de actualización
Conjuntos de estados virtuales D = {Dj}
Cada conjunto de estados virtuales contiene los estados de una
instancia
31
VIRTUALIZACIÓN: DE UNA FSM A UNA FVSM (II)
Por cada Dj ∈ D, se crea una instancia ij
Se crean tantos marcos fk ∈ F como elementos tenga el mayor Dj
Se define la función de virtualización w: I × F → S
w(ij, fk) = dk(j) ∀ dk
(j) ∈ Dj
ip y fq son la instancia y marco inicial, respectivamente, si
w(ip, fq) = s0 y s0 ∈ Dp
Se define la función de actualización u: I × F → S
Se define la función de transición t: I × F × X → F
t(ij, fk, x) = fl donde w(u(ij,fk), fl) = h(dk(j),x) ∀ dk
(j) ∈ Dj y ∀ x ∈ X
Se define la función de salida o: I × F × X → Y
o(ij,fk,x) = g(dk(j), x) ∀ dk
(j) ∈ Dj y ∀ x ∈ X
=
= "
A a d i
A d i f i w D d
q
j
k q
j
k j
k j j
j
k ) (
) (
) (
si
si ) , ( ,
32
=
= "
A a d i
A d i f i w D d
q
j
k q
j
k j
k j j
j
k ) (
) (
) (
si
si ) , ( ,
Por cada Dj ∈ D, se crea una instancia ij
Se crean tantos marcos fk ∈ F como elementos tenga el mayor Dj
Se define la función de virtualización w: I × F → S
w(ij, fk) = dk(j) ∀ dk
(j) ∈ Dj
ip y fq son la instancia y marco inicial, respectivamente, si
w(ip, fq) = s0 y s0 ∈ Dp
Se define la función de actualización u: I × F → S
Se define la función de transición t: I × F × X → F
t(ij, fk, x) = fl donde w(u(ij,fk), fl) = h(dk(j),x) ∀ dk
(j) ∈ Dj y ∀ x ∈ X
Se define la función de salida o: I × F × X → Y
o(ij,fk,x) = g(dk(j), x) ∀ dk
(j) ∈ Dj y ∀ x ∈ X
VIRTUALIZACIÓN: DE UNA FSM A UNA FVSM (II)
Se ha demostrado que
la FSM y la FVSM creada
son equivalentes
Pág.
237-240
32
IMPLEMENTACIONES FVSM
Definición de una implemementación FVSM
L = {L1, L2, …, Ln} con Lk = (li,j) ∈ Mp×q
Ejemplo
k
Grafo de instancias
Conjuntos de
estados virtuales Implementación
D = {D1, D2, D3, D4}
D1 = {s1, s2, s3, s0}
D2 = {s1, s2, s4, s5}
D3 = {s3, s6, s7}
D4 = {s1, s2, s8, s9}
L = {L1, L2, L3, L4}
=
54
21
2ss
ssL
=
03
76
3ss
ssL
=
98
21
4ss
ssL
=
03
21
1ss
ssL
33
CONDICIONES DE IMPLEMENTACIÓN
Las condiciones que debe cumplir una implementación
con ω-recursos de una FVSM equivalente a una FSM
dada son:
Compatibilidad
Equivalencia
Empaquetabilidad
Adecuidad
34
CONDICIÓN DE COMPATIBILIDAD
El conjunto generador es un conjunto independiente en el grafo de
incompatibilidad de la FSM
Estados incompatibles a ⋈ b
pa ⋂ pb ≠ Ø donde ps = {s’ ∈ S : (s,s’) ∈ T} con s ∈ S
Grafo de incompatibilidad H=(S,E)
{s,t} ∈ E si y solo si s ⋈ t con s,t ∈ S
Condición impuesta por la arquitectura propuesta
G = (S, T)
FSM
Grafo de
incompatibilidad
s2 ⋈ s5
/ H = (S, E)
35
Grafo de instancias
Conjuntos de
estados virtuales Implementación
D = {D1, D2, D3, D4}
D1 = {s1, s2, s3, s0}
D2 = {s1, s2, s4, s5}
D3 = {s3, s6, s7}
D4 = {s1, s2, s8, s9}
L = {L1, L2, L3, L4}
=
54
21
2ss
ssL
=
03
76
3ss
ssL
=
98
21
4ss
ssL
=
03
21
1ss
ssL
CONDICIÓN DE EQUIVALENCIA
Para cualquier conjunto virtual Dj ∈ D, se verifica que, para todo
estado s ∈ Dj, existen un i y un j tal que li,j = s
Esta condición garantiza que la FVSM es equivalente a la FSM dada
k
36
CONDICIÓN DE EMPAQUETABILIDAD
Para cualquier par de instancias adyacentes ia,ib ∈ I se cumple que:
donde
Grafo de instancias
Conjuntos de
estados virtuales Implementación
D = {D1, D2, D3, D4}
D1 = {s1, s2, s3, s0}
D2 = {s1, s2, s4, s5}
D3 = {s3, s6, s7}
D4 = {s1, s2, s8, s9}
L = {L1, L2, L3, L4}
=
54
21
2ss
ssL
=
03
76
3ss
ssL
=
98
21
4ss
ssL
=
03
21
1ss
ssL
Esta condición garantiza
que no existan instancias
adyacentes que difieran
en más de un paquete
(o fila)
=
= contrario caso en 0
si 1 ) , ( , ,
,
b j i
a j i
b a
l l j i g
" >
= contrario caso en 0
} ,..., 1 { 0 ) , ( si 1 ) (
,
,
q j j i g i h
b a
b a
1 ) ( ) , ( 1
, = D
=
p
i b a b a i h L L
37
CONDICIÓN DE EMPAQUETABILIDAD
Grafo de instancias
Conjuntos de
estados virtuales Implementación
D = {D1, D2, D3, D4}
D1 = {s1, s2, s3, s0}
D2 = {s1, s2, s4, s5}
D3 = {s3, s6, s7}
D4 = {s1, s2, s8, s9}
L = {L1, L2, L3, L4}
=
54
21
2ss
ssL
=
03
76
3ss
ssL
=
98
21
4ss
ssL
=
03
21
1ss
ssL
Para cualquier par de instancias adyacentes ia,ib ∈ I se cumple que:
donde
Esta condición garantiza
que no existan instancias
adyacentes que difieran
en más de un paquete
(o fila)
=
= contrario caso en 0
si 1 ) , ( , ,
,
b j i
a j i
b a
l l j i g
" >
= contrario caso en 0
} ,..., 1 { 0 ) , ( si 1 ) (
,
,
q j j i g i h
b a
b a
1 ) ( ) , ( 1
, = D
=
p
i b a b a i h L L
38
CONDICIÓN DE ADECUIDAD
Dada una implementación L = {L1, L2, …, Ln} con Lk = (li,j) ∈ Mp×q
la condición impuesta por los ω-recursos se reescribe como:
log2 q ≤ log2 pq – ω
Esta condición garantiza una implementación con ω-recursos
Grafo de instancias
Conjuntos de
estados virtuales Implementación
D = {D1, D2, D3, D4}
D1 = {s1, s2, s3, s0}
D2 = {s1, s2, s4, s5}
D3 = {s3, s6, s7}
D4 = {s1, s2, s8, s9}
L = {L1, L2, L3, L4}
=
54
21
2ss
ssL
=
03
76
3ss
ssL
=
98
21
4ss
ssL
=
03
21
1ss
ssL
q = 2
pq = 4
Se requieren
1-recursos
39
PROBLEMA DEL COSTE MÍNIMO DE IMPLEMENTACIÓN
A cada implementación L le asignamos un coste mediante la
función:
c : L → ℤ0
El Problema del Mínimo Coste de Implementación (MICP) se
define como sigue:
min c(L)
sujeto a que L cumpla las condiciones de implemementación
+
40
PROBLEMA DE LA MÍNIMA PROFUNDIDAD DE MEMORIA
Para optimizar la velocidad es necesario minimizar el máximo
entre la profundidad de la memoria principal (μ) y la de la
secundaria (σ). Definimos profundidad FVSM (d) como sigue:
d = max {μ, σ}
Dada una L = {L1, L2, …, Ln} con Lk = (lki,j) ∈ Mp×q que
cumple las condiciones de implementación tenemos que:
d = max {|X| + log2 pq, σ}
donde σ viene dado por el número de actualizaciones de
instancia
El Problema de la Mínima Profundidad de Memoria (MMDP)
consiste en encontrar la implementación L que minimiza d
41
COMPLEJIDAD DEL MMDP
Problema de decisión asociado al MMDP
Dada una FSM M = (X,Y, S, f, g, s0) y un entero J ≤ |X| + ⌈log2 |S|⌉, ¿existe una
implementación de una FVSM equivalente a M que utilice ω-recursos y tenga
una profundidad memoria menor o igual que J?
Se ha demostrado que el MMDP es NP-completo mediante reducción del
Máximo Conjunto Independiente
Dada una FVSM, el problema de generar la optimización óptima se denomina
Problema del Empaquetamiento
Se ha demostrado que el problema del empaquetamiento es NP-completo
mediante reducción del 3-SAT
Pág. 248-257
A1 S FVSM M1 Impl. ópt. M1
A2 S FVSM M2 Impl. ópt. M2
A3 S FVSM M3 Impl. ópt. M3
. . . . . . . . . .
Virtualización
FSM
Empaquetamiento
Virtualización
Virtualización
Implemtación
óptima de
una FVSM
equivalente
MMDP
Pág. 258-268
Empaquetamiento
Empaquetamiento
42
ALGORITMO PARA GENERAR IMPLEMENTACIONES FVSM
... ...
...
G, {}, S
...
G, A, P
G: Grafo de incompatibilidad
A: Conjunto generador
P: Pendientes de ser procesados
43
Esquema de branch and bound (ramificación y acotamiento)
Cada nodo es la implementación de la FVSM obtenida mediante una heurística a
partir del conjunto generador A (conjunto independiente en todo momento)
Se construye dinámicamente un árbol de soluciones (ramificación)
Se realizan podas para evitar el crecimiento del árbol (acotamiento)
Se inicializa con una solución de greedy
ALGORITMO PARA GENERAR IMPLEMENTACIONES FVSM
s∊P
...
G, {}, S
...
Ramificación
G, A, P
Primero en profundidad
43
Esquema de branch and bound (ramificación y acotamiento)
Cada nodo es la implementación de la FVSM obtenida mediante una heurística a
partir del conjunto generador A (conjunto independiente en todo momento)
Se construye dinámicamente un árbol de soluciones (ramificación)
Se realizan podas para evitar el crecimiento del árbol (acotamiento)
Se inicializa con una solución de greedy
ALGORITMO PARA GENERAR IMPLEMENTACIONES FVSM
...
G, A, P\{s}) G, A∪{s}, P\({s}∪Is)
... ...
G, {}, S
...
Ramificación
A∪{s} es un conjunto independiente
Se añade s No se añade s s∊P
G, A, P
43
Esquema de branch and bound (ramificación y acotamiento)
Cada nodo es la implementación de la FVSM obtenida mediante una heurística a
partir del conjunto generador A (conjunto independiente en todo momento)
Se construye dinámicamente un árbol de soluciones (ramificación)
Se realizan podas para evitar el crecimiento del árbol (acotamiento)
Se inicializa con una solución de greedy
ALGORITMO PARA GENERAR IMPLEMENTACIONES FVSM
...
G, {}, S
...
A∪{s} no es un conjunto independiente
Ramificación
G, A, P\{s}) G, A∪{s}, P\({s}∪Is)
... ...
Se añade s No se añade s s∊P
G, A, P
43
Esquema de branch and bound (ramificación y acotamiento)
Cada nodo es la implementación de la FVSM obtenida mediante una heurística a
partir del conjunto generador A (conjunto independiente en todo momento)
Se construye dinámicamente un árbol de soluciones (ramificación)
Se realizan podas para evitar el crecimiento del árbol (acotamiento)
Se inicializa con una solución de greedy
ALGORITMO PARA GENERAR IMPLEMENTACIONES FVSM
...
G, {}, S
...
Ramificación
G, A, P
Se elige el estado s∊P que tiene
más estados incompatibles en G[P] G, A, P\{s}) G, A∪{s}, P\({s}∪Is)
... ...
Se añade s No se añade s s∊P
43
Esquema de branch and bound (ramificación y acotamiento)
Cada nodo es la implementación de la FVSM obtenida mediante una heurística a
partir del conjunto generador A (conjunto independiente en todo momento)
Se construye dinámicamente un árbol de soluciones (ramificación)
Se realizan podas para evitar el crecimiento del árbol (acotamiento)
Se inicializa con una solución de greedy
ALGORITMO PARA GENERAR IMPLEMENTACIONES FVSM
...
G, A’, P
G, {}, S
...
... ...
G, A, P
... ...
d=f(A’)
Acotamiento
43
Esquema de branch and bound (ramificación y acotamiento)
Cada nodo es la implementación de la FVSM obtenida mediante una heurística a
partir del conjunto generador A (conjunto independiente en todo momento)
Se construye dinámicamente un árbol de soluciones (ramificación)
Se realizan podas para evitar el crecimiento del árbol (acotamiento)
Se inicializa con una solución de greedy
ALGORITMO PARA GENERAR IMPLEMENTACIONES FVSM
...
G, A’, P
G, {}, S
...
... ...
G, A, P d=f(A)
Acotamiento
43
Esquema de branch and bound (ramificación y acotamiento)
Cada nodo es la implementación de la FVSM obtenida mediante una heurística a
partir del conjunto generador A (conjunto independiente en todo momento)
Se construye dinámicamente un árbol de soluciones (ramificación)
Se realizan podas para evitar el crecimiento del árbol (acotamiento)
Se inicializa con una solución de greedy
ALGORITMO PARA GENERAR IMPLEMENTACIONES FVSM
...
G, A’, P
G, {}, S
...
... ...
G, A, P
... ...
d=f(A) f(A∪P) ≥ d
Acotamiento
43
Esquema de branch and bound (ramificación y acotamiento)
Cada nodo es la implementación de la FVSM obtenida mediante una heurística a
partir del conjunto generador A (conjunto independiente en todo momento)
Se construye dinámicamente un árbol de soluciones (ramificación)
Se realizan podas para evitar el crecimiento del árbol (acotamiento)
Se inicializa con una solución de greedy
CONTENIDO
Introducción
Caracterización de implementaciones basadas en
memoria de FSM sobre FPGA
Máquinas de Estados Virtuales Finitos (FVSM)
Implementación de FVSM en FPGA
Generación automática de implementaciones FVSM
Comparativa entre implementaciones FSM y FVSM
Otras aportaciones a la implementación basada en
memoria de FSM
Conclusiones y trabajo futuro
44
COMPARATIVA DE VELOCIDAD ENTRE ARQUITECTURAS
Se han comparado las arquitecturas FSM y FVSM con valores de parámetros que permiten alojar un número de estados del mismo orden
Para unos determinados parámetros de FSM existen distintas FVSM (mejor caso)
Cuanto más estados tiene la FSM mayor potencial presenta la arquitectura
El incremento de velocidad crece con el número de bits de codificación de estados (mayor reducción de la profundidad)
Número de bits de
codificación de estados Número de entradas
Incre
me
nto
de
ve
locid
ad
(%
)
La FVSM es siempre más rápida
(mínimo incremento del 7%)
En el 52% de los casos,
los incrementos de velocidad
son superiores al 50%
Existen casos en los que
la velocidad de la FVSM
es más del doble
45
BATERÍAS DE PRUEBAS. EFECTIVIDAD DE LA TÉCNICA
Total
Reducción
Grupo 1 # medio estados = 54
# medio transiciones = 88
Grupo 2 # medio estados = 61
# medio transiciones = 160
Grupo 3 # medio estados = 358
# medio transiciones = 600
Grupo 4 # medio estados = 352
# medio transiciones = 1045
4 bits
3 bits
2 bits
1 bits
0 bits
10% 3% 8%
26%
54%
25%
75%
20%
80%
10%
40%
50%
10%
30%
60%
46
BATERÍAS DE PRUEBAS. EFECTIVIDAD DE LA TÉCNICA
Total
Reducción
4 bits
3 bits
2 bits
1 bits
0 bits
10% 3% 8%
26%
54%
25%
75%
20%
80%
10%
40%
50%
10%
30%
60%
92%
1.6 bits
100%
1.3 bits
80%
1 bit
100%
2.6 bits
90%
1.2 bits
46
Grupo 1 # medio estados = 54
# medio transiciones = 88
Grupo 2 # medio estados = 61
# medio transiciones = 160
Grupo 3 # medio estados = 358
# medio transiciones = 600
Grupo 4 # medio estados = 352
# medio transiciones = 1045
BATERÍAS DE PRUEBAS. INCREMENTO DE VELOCIDAD
En 9 de los 20 casos del Grupo 3, los incrementos son superiores al 33%
Se alcanzan valores del orden del 80%
47
CONTENIDO
Introducción
Caracterización de implementaciones basadas en
memoria de FSM sobre FPGA
Máquinas de Estados Virtuales Finitos (FVSM)
Implementación de FVSM en FPGA
Generación automática de implementaciones FVSM
Comparativa entre implementaciones FSM y FVSM
Otras aportaciones a la implementación basada en
memoria de FSM
Conclusiones y trabajo futuro
48
ASYMRAM
Se ha desarrollado una descripción arquitectural genérica
(ASYMmetric RAM) debido a que las herramientas de diseño no
infieren RAM asimétrica:
Se ha utilizado en las implementaciones FVSM
Se ha publicado como una herramienta para
realizar implementaciones basadas en memoria
de FSM reconfigurables
Un puerto de lectura para el funcionamiento
de la FSM
Un puerto de escritura para el proceso de
reconfiguración
49
FSMIM: FSM CON MULTIPLEXIÓN DE ENTRADAS
Para reducir el impacto del número de entradas en el tamaño de la memoria, se proponen las FSM con multiplexión de entradas Se aprovechan las indeterminaciones en las
entradas
Hemos propuesto una técnica (FSMIM) que reduce significativamente la complejidad del multiplexor y los requerimientos de memoria
Reducción media de memoria del 87%
Sólo en el 19% de los casos se requirieron multiplexores de más de 4 entradas
En el 81% de los casos, la velocidad fue superior a la de las implementaciones basadas en LUT
FSMIM
50
Para dotar de capacidad de reconfiguración a las implementaciones FSM con
multiplexión de entrada es necesario disponer de multiplexor reconfigurable
Las entradas que afectan a un determinado estado pueden cambiar tras el
proceso de reconfiguración
Hemos propuesto CRMUX
Los resultados muestran significativas mejoras en área, velocidad y
capacidad de reconfiguración respecto al estado del arte
MULTIPLEXOR RECONFIGURABLE. RMUX
CRMUX Estado
del arte
m salidas
n entradas
m salidas
n m + 1 entradas
51
CONTENIDO
Introducción
Caracterización de implementaciones basadas en
memoria de FSM sobre FPGA
Máquinas de Estados Virtuales Finitos (FVSM)
Implementación de FVSM en FPGA
Generación automática de implementaciones FVSM
Comparativa entre implementaciones FSM y FVSM
Otras aportaciones a la implementación basada en
memoria de FSM
Conclusiones y trabajo futuro
52
CONCLUSIONES (I)
Se han caracterizado las implementaciones basadas en memoria
de FSM sobre FPGA, observándose una importante reducción de
velocidad en FSM con un número de elevado de estados.
Se ha definido el modelo FVSM y estudiado su equivalencia con las
FSM.
Se ha propuesto una arquitectura para la implementación de FVSM
y estudiado el impacto de sus parámetros en las prestaciones
obtenidas en FPGA. La arquitectura ofrece ventajas en velocidad,
consumo de potencia y capacidad de reconfiguración.
Se ha estudiado el problema de generar implementaciones FVSM
óptimas. Se ha propuesto la versión del problema que maximiza la
velocidad, probándose su NP-completitud.
53
CONCLUSIONES (II)
Se ha propuesto un algoritmo para maximizar la velocidad de las
implementaciones FVSM, probándose su eficiencia y efectividad.
Se ha probado que la arquitectura FVSM ofrece mayor velocidad
potencial respecto a la arquitectura basada en memoria
convencional.
La aplicación de la técnica a casos prácticos ha demostrado la
utilidad del modelo, arquitectura y algoritmos propuestos.
Se propuesto una descripción arquitectural que facilita el diseño de
memorias asimétricas.
Se ha propuesto un multiplexor para FSM reconfigurables con
multiplexión de entradas con ventajas en área, velocidad y coste de
reconfiguración.
54
TRABAJO FUTURO
Extender el modelo propuesto a una jerarquía con mayor número de
niveles, con la posibilidad incluir un nivel externo a la FPGA
Estudiar y evaluar otras posibles arquitecturas para las FVSM. Tales
como memoria secundaria multi-puerto o relojes diferentes para los
distintos niveles de la jerarquía.
Realizar estudios de implementación de FVSM con multiplexión de
entradas y evaluar la aplicación de técnicas como dummy states.
Incluir criterios de área ocupada o potencia consumida en los
algoritmos para generar implementaciones FVSM y realizar los
correspondientes estudios comparativos.
Buscar otras aplicaciones a los problemas NP-completos propuestos.
Paralelizar los algoritmos para la generación de FVSM para lograr
una ejecución eficiente en arquitecturas paralelas
55
MÁQUINAS DE ESTADOS VIRTUALES FINITOS
Una contribución a la implementación electrónica de máquinas de estados
Lectura de tesis doctoral
Director:
• José Luis Guisado Lizar
(Univ. de Sevilla)
25 de septiembre de 2012
Tribunal:
• Manuel Jesús Bellido Díaz
(Univ. de Sevilla)
• Juan Antonio Gómez Pulido
(Univ. de Extremadura)
• José María Rodríguez Corral
(Univ. de Cádiz)
• Pedro Guerra Gutiérrez
(Univ. de Politécnica de Madrid)
• Daniel Cagigas Muñiz
(Univ. de Sevilla)
Autor:
• Raouf Senhadji Navarro