• No se han encontrado resultados

Diseño de Sistemas P usando hardware ad hoc: FPGAs

4 El Grupo de Computación Natural (U.P.M.) Investigación

4.4 Otros acercamientos novedosos

4.5.2 Diseño de Sistemas P usando hardware ad hoc: FPGAs

El siguiente paso natural al diseño de circuitos que implementen la evolución en los Sistemas P mediante dispositivos físicos no específicos tales como los microcontroladores es la utilización de hardware que permita la construcción de circuitos diferenciados y destinados en exclusiva a dicha implementación. La idea subyacente detrás de este objetivo no es más que la persecución como objetivo principal de los aspectos inherentes a un Sistema P, entre los que destaca, principalmente, el alto nivel de paralelismo y con ello, la altísima velocidad de resolución de determinados problemas. Si en vez de utilizar hardware de propósito general, que tiene que ser utilizado con las limitaciones propias de algo que pretende abordar cualquier problema, se construye un hardware que sirva en exclusiva para llevar a cabo las labores propias de los Sistemas P el rendimiento debe resentirse de manera favorable.

Como ya se mencionó en el apartado de sistemas hardware en el capítulo correspondiente al estado del arte, para la creación de estos circuitos dedicados se dispone

173

de los denominados "Circuitos Integrados para Aplicaciones Específicas" (ASICs) que no son más que circuitos que, en vez de tener un carácter general, están diseñados para atender a tareas específicas. Entre las diferentes familias de dispositivos disponibles, destacan las FPGAs o "Matrices de Puertas Programables" (Field Programmable Gate Array). Estos dispositivos disponen de bloques de lógica programable así como de canales de conexión que interconectan los anteriores bloques, además de otra serie de ellos destinados como bloques de memoria y otros que se encargan de la entrada/salida a través de los pines del chip. Todo esto permite al usuario disponer las conexiones entre los diferentes elementos de los bloques y entre los mismos bloques de tal manera que llevan a cabo la función que se desea.

Figura 4.16 Esquema de una FPGA

Tal y como ya se ha mencionado antes a lo largo del presente trabajo doctoral, dentro de las líneas de investigación que se abordan en el Grupo de Computación Natural (G.C.N.) de la Universidad Politécnica de Madrid aparece la de diseñar circuitos específicos que implementen los Sistemas P. Los investigadores del G.C.N. presentan en [Fernández et al., 2005] una primera aproximación al diseño lógico de un circuito que desarrolla el proceso de selección del conjunto de reglas activas en un Sistema P. Se presenta en detalle este trabajo y los siguientes que representan la continuación en tanto en cuanto son la base sobre la cual se construye posteriormente esta tesis doctoral.

Inicialmente los autores establecen las limitaciones que parecen razonables de cara a acotar de alguna manera el consumo de recursos necesarios para el desarrollo del circuito y así, establecen que:

El circuito se aplicará para obtener el conjunto de reglas activas en una región dada del Sistema P (la aplicación en todas las regiones existentes no será más que la aplicación en paralelo en todas ellas)

174

O = {a,b,c,d,e,f,g,h,i,j}

 El multiconjunto de cada membrana se describe mediante un registro de cuatro bits y el conjunto de los 10 necesarios para el total del alfabeto es un registro del sistema.

 Cada regla de evolución viene representada por 12 registros como el mencionado en el párrafo anterior (cada registro de doce palabras de 4 bits cada una). El primer registro representa el multiconjunto correspondiente al antecedente de la regla y los dos siguientes el multiconjunto que durante la evolución se envían a out y here (membrana padre y la misma respectivamente). El resto de los registros representan, cada uno, a los multiconjuntos que se enviarían a cada una de las posibles membranas hijas (contenidas en la región).

 Las membranas hija están representadas además en un registro de 10 elementos binarios que representan la existencia de cada una de ellas.

 Por último, se establece un mapa de prioridades que será una matriz cuadrada binaria que representa, en cada posición, la existencia de una prioridad de una regla respecto de la otra (si está a uno tendrá mayor prioridad y si está a cero, no)

En el trabajo se diseña la funcionalidad del circuito en base a que una regla activa en una membrana de un Sistema P debe cumplir que:

 Sea una regla aplicable, esto es, los objetos que aparecen en su antecedente estén incluidos en el multiconjunto de la membrana (o sea, que haya suficientes recursos como para poder ejecutarse)

 Sea una regla útil, o sea, que el destino de la regla, en caso de ser aplicada, exista.

 por último, para ser activa no puede existir ninguna otra regla con mayor prioridad.

Por lo tanto, el circuito se basa en tres unidades funcionales: ApplicableFU (Unidad Funcional Aplicables), UsefulFU (Unidad Funcional Útiles) y ActiveFU (Unidad Funcional Activas), tal y como se puede ver en la Figura 4.17. Cada una de las unidades funcionales tienen como objetivo obtener el conjunto de reglas que describe su denominación destacando que la última, además de comprobar qué reglas son aplicables y útiles, accede al mapa de prioridades para comprobar que no existe otra regla con mayor prioridad.

175

Figura 4.17 Diseño funcional del circuito

La unidad funcional “aplicable” es, como su nombre indica, la encargada de determinar si cada una de las reglas de las que se dispone en la membrana es o no aplicable. Dado que esta característica se refiere al hecho de que en el multiconjunto de la membrana se disponga de suficientes unidades de cada uno de los elementos necesarios como para cubrir las necesidades del antecedente de la regla, el circuito se podrá implementar en base a comparadores de cuatro bits (recordemos que es el número de bits por cada objeto) tal y como se observa en la Figura 4.18. Si todos y cada uno de los comparadores establecen un resultado positivo, entonces la salida de esta unidad será positiva.

176

En cuanto a la unidad funcional “útiles”, ésta determina si las reglas disponibles son o no útiles a base de comparar la membrana de destino con el registro de existencia de cada una de las membranas. Inicialmente, como se puede observar en la Figura 4.19, el circuito compara cada uno de los multiconjuntos que envía la regla con el conjunto vacío simplemente para determinar si es necesario comprobar la existencia del destino (si una regla no envía nada a una membrana no es necesario realizar la comprobación). Por último se realiza una operación “AND” lógica con el registro de existencia.

Figura 4.19 Unidad funcional "Útiles"

Por último, en el circuito propuesto, la unidad funcional que determina el conjunto de reglas activas se basa en la recepción del conjunto de reglas aplicables y útiles (determinadas en las unidades funcionales anteriores) para comprobar, para cada dos, si existen prioridades entre ellas como se puede ver en la Figura 4.20

Una vez diseñado el circuito para obtener las reglas activas de una membrana, en [Martínez et al., 2006] se plantea el diseño lógico del circuito necesario para proceder a la aplicación de dichas reglas. En este trabajo se presenta un circuito que implementa el algoritmo de aplicación de reglas basado en las cotas de máxima aplicabilidad que se ha estudiado con anterioridad. Recordemos que este algoritmo se basa en el cálculo del máximo número de veces que una regla puede aplicarse sobre el multiconjunto existente en la membrana y en la generación aleatoria de un número que indicará, dentro del límite máximo, el número de veces que la regla se va a aplicar.

177

Figura 4.20 Unidad funcional "Activas"

Para diseñar el circuito necesario, cuyo resultado final es un registro indicando el número de veces que se ha aplicado cada una de las reglas de la membrana, los autores acuden al diseño lógico de las diferentes unidades funcionales necesarias:

Primeramente se centran en la unidad funcional que calcula la máxima aplicabilidad de una regla determinada. Esta unidad funcional se basa en la recepción de dos registros: uno con los valores de las ocurrencias de los objetos del multiconjunto y otro con el antecedente de la regla en cuestión. La obtención de la máxima aplicabilidad no es más que efectuar la división de cada uno de los valores del multiconjunto entre cada uno de los correspondientes en el antecedente de la regla, obteniendo así, para cada objeto, el número de veces que se podría aplicar. Ahora bien, dado que hay que aplicar la regla con todos los objetos de su antecedente, el valor máximo de aplicación será el mínimo de estos valores obtenidos con anterioridad.

La unidad funcional "regla activa aleatoria" es la encargada de seleccionar de manera aleatoria, para garantizar el indeterminismo, una de las reglas activas proporcionadas por el circuito anterior. Esta unidad funcional incluye un detector de que ha sido elegida la regla para que no se generen más números aleatorios y otro detector que

178

evita que se trate de manera aleatoria la obtención de la regla si se está ya en la situación en la que existe solamente una regla activa y por tanto tiene que ser elegida de manera obligada (comparador BCD con el valor 1 en la Figura 4.21).

Figura 4.21 Unidad funcional "Regla aleatoria"

Por último, la unidad funcional encargada de la aplicación de la regla seleccionada en un determinado número de veces entre cero y su máxima aplicabilidad se basa en generar dicho número de manera aleatoria al mismo tiempo que lleva a cabo el registro del número de objetos consumidos que no son más que el producto escalar del número por el número de ocurrencias de cada objeto en el antecedente de la regla.

Todo esto va acompañado de una circuitería de apoyo que produce las señales que habilitan las distintas fases del circuito. En concreto se usan cuatro fases a través de un contador de dos bits:

 Antes de la fase 0, se inicializa el registro del multiconjunto

 En la fase 0 se calculan las reglas activas

 En la fase 1 se obtiene la regla de manera aleatoria

 En la fase 2 se obtiene la máxima aplicabilidad de la regla elegida y se resta del multiconjunto las unidades consumidas.

 En la fase 3 se registran los valores de la regla usada y se cargan los nuevos valores en el registro del multiconjunto existente para volver a la fase 0.

179

El resultado final es el mostrado en la Figura 4.22 que representa al circuito completo en el que se puede observar las unidades funcionales que calculan las reglas activas, la elección aleatoria de una regla y su aplicación, así como la posterior sustracción de los elementos consumidos del multiconjunto y el registro de la regla aplicada.

Figura 4.22 Esquema del circuito de aplicación de reglas

Continuando con esta línea de trabajo, los autores tienen en consideración el hecho de que la eficiencia puede ser ampliamente mejorada si en vez de utilizar el algoritmo clásico de aplicación de reglas activas con cotas de máxima aplicabilidad, se pudiese implementar un circuito en el que se llevase a cabo el desarrollo del algoritmo de eliminación de reglas. Hay que recordar que este algoritmo presenta una modificación que garantiza que el tiempo de ejecución es acotado y que depende únicamente del número de reglas activas aplicar. El algoritmo, como se puede ver en la figura, lleva a cabo la aplicación de las reglas activas en un número aleatorio de veces (siempre entre cero y su cota de máxima aplicabilidad) para todas excepto para la última, que se aplicará tantas

180

veces como indique su cota de máxima aplicabilidad. De esta manera se garantiza que en cada iteración se elimina una de las reglas activas al no ser ya posible aplicarla al haber consumido los recursos necesario para ello.

Adaptación utilizada del algoritmo de eliminación de reglas

En [Martínez et al., 2006b] se presenta el circuito que lleva a cabo este algoritmo cuya representación lógica es la mostrada en la Figura 4.23 y cuya explicación, su autor desarrolla como se indica a continuación:

i. Las entradas las componen los registros: multiconjunto de objetos inicial, antecedentes de las reglas de evolución y reglas activas iniciales.

ii. La activación de la señal Reset cargará los valores iniciales de ind, ult y el registro Multiconjunto de objetosw.

iii. El módulo de Selección de reglas aplicables cargará unos valores nuevos en el Registro de reglas activas para cada uno de los pasos que recorre el sistema.

iv. El módulo de Selección del Antecedente de la regla Ri cargará el Registro de Antecedente de la regla activa en función del valor de ind.

v. La unidad de Control Lógico realiza la secuencialización del sistema, proporciona los valores de ind y activa la señal ULT.

vi. El valor de ind permite seleccionar si la regla actual es activa o no, seleccionar el antecedente de la regla actual y seleccionar sobre qué regla hay que contabilizar la aplicación, en el caso de ser necesario.

(1) Initial_Multiset_Objects

(2) ind0;ultnum.rmax1

(3) REPEAT

(4) IF NOT Active(rind)

(5) THEN N0

(6) ELSE IF indult

(7) THEN NAleatory_Aplicability(0,MAX) (8) ELSE NAplicability(MAX)

(9) '



NAntecedent

 

rind



; (10) counts(N,rind);

(11) RActiveRules; (12) IF indult

(13) THEN indind1

(14) ELSE { (15) ind0; (16) ultult1; (17) } (18) UNTIL ult 0

181

vii. El módulo AplicabilidadMAX junto con el generador de números aleatorios entre 1 y el valor MAX permiten obtener el valor N. Mediante la lógica necesaria, se selecciona la salida de uno de los dos circuitos dependiendo del valor de ULT y se habilita cuando la regla actual es activa. Este valor N servirá para actualizar el multiconjunto de objetos, cuando se aplica la regla, y para contabilizar el valor de la aplicación de dicha regla.

viii. También, en paralelo, se calculan los nuevos valores del multiconjunto de objetos w’ y se contabiliza el valor de N para la regla aplicada. El registro de aplicación de reglas se actualiza en cada uno de los pasos incrementando en N el valor asociado a cada regla, para contabilizar el número de veces total que se aplica cada regla. ix. Por último, se termina el proceso e inicia un nuevo paso del algoritmo cargando el

nuevo multiconjunto de objetos y actualizando las variables, hasta cumplir la condición de parada.

182

4.6

Conclusiones

El Grupo de Computación Natural de la Universidad Politécnica de Madrid aborda la investigación sobre los Sistemas P desde todos los puntos de vista que parecen razonables, obteniendo buenos resultados en todos los campos: diseño de arquitecturas destinadas a mejorar de manera notable la comunicación entre membranas, diseño de nuevos algoritmos que incrementen la productividad del procesamiento al mismo tiempo que no afecten al resto de las otras características y, por último, el diseño y construcción de sistemas hardware que lleven a cabo las mejoras obtenidas en los mencionados campos.

Es en esta faceta de aproximación hardware en la que se hace hincapié ya que está directamente relacionada con el propósito de la presente tesis doctoral: primeramente se presenta un estudio acerca de la posible implementación de Sistemas P mediante el uso de microcontroladores, lo que lleva a los investigadores a obtener buenos resultados mediante el uso de hardware de propósito general, lo que redunda en beneficio de los costes del sistema. Sin embargo, este mismo hardware impide que la productividad sea tan alta como cabe esperar de un sistema ad hoc. Por otra parte, el software que se ejecuta sobre el microcontrolador limita el intra-paralelismo de la membrana.

En segundo lugar se presenta un circuito implementado mediante FPGAs que incrementa notablemente la productividad al ser hardware destinado en exclusiva a dicha funcionalidad. Este circuito, que debe servir de inspiración para el diseño del procesador de membranas paralelo que resulta ser el objetivo de esta tesis, presenta sin embargo, un nivel de intra-paralelismo que debería ser mejorable para poder llegar a sistemas que se puedan acercar a la filosofía de la computación con membranas: el paralelismo masivo. Es por esto por lo que se insiste, otra vez, en que el objetivo de esta tesis será la de conseguir un algoritmo que favorezca notablemente el paralelismo interno de las membranas, que permita la aplicación masiva de las reglas al mismo tiempo que el diseño de un circuito que pueda llevar a cabo todas las tareas del algoritmo de manera paralela y que pueda ser sintetizado sobre FPGAs.

5

- Procesador Paralelo Basado en