METODOLOGIAS DE DISEÑO PARA COMPUTACIÓN RECONFIGURABLE. Iñigo Aguirre; Jose Angel Ezquerra. Universidad del País Vasco. Euskal Herriko Unibertsitatea. jtpagpoi@sc.ehu.es. RESUMEN Este trabajo tiene por objeto el estudio de las características de las tarjetas comerciales para su utilización como coprocesadores hardware en un ordenador personal. Se pretende utilizar una tarjeta de este tipo para implantar y acelerar el entrenamiento de redes neuronales. El estudio se centrará en dos aspectos fundamentales relativos a la aplicación: - Las características ideales que deberían incorporar dichos coprocesadores. - La adecuación de la metodología propuesta por cada fabricante. Los coprocesadores hardware se diseñan en base a dispositivos de lógica programable de alta densidad de integración (Field Programmable Gate Arrays: FPGAs). El interés de utilizar las FPGAs como soporte para el diseño de redes neuronales reside en los siguientes aspectos: - La utilización de técnicas de paralelismo que facilitan el diseño de un procesador neuronal de gran velocidad de computación. - La estructura reprogramable de las FPGAs facilita el diseño de diferentes topologías sobre el mismo sustrato, a diferencia de un neurochip diseñado para un tipo específico de red. La fase de entrenamiento de una red neuronal determinada consiste en un proceso iterativo en el que la red es alimentada con un gran conjunto de datos para adaptar en cada caso los pesos de las neuronas correspondientes. Si se implementa toda la circuitería necesaria para realizar el entrenamiento de cada tipo de red sobre una FPGA supondría acelerar, por hardware, dicha fase de entrenamiento. Este trabajo es el inicio para una futura implementación consistente en una aplicación para la optimización de redes neuronales en el análisis de faltas en sistemas de distribución de energía eléctrica.
1. INTRODUCCIÓN. Hay dos métodos para la ejecución de algoritmos en la computación tradicional. El primero es usar un Circuito Integrado de Aplicación Específica o ASIC que opera en hardware. Se diseñan ASICs para realizar una aplicación específica. Estos son muy rápidos y eficaces siempre que realicen exactamente la aplicación para la que han sido diseñados. Sin embargo, después de la fabricación el circuito no puede alterarse. Si parte del circuito necesita una modificación será necesario un nuevo diseño y fabricación de otro chip. Éste es un proceso caro, sobre todo cuando uno considera las dificultades de reemplazar los ASICs de un gran número de sistemas desplegados. Los microprocesadores presentan una solución más flexible. Para realizar las operaciones pertinentes los procesadores ejecutan un juego de instrucciones. Si cambiamos las instrucciones del software, modificaremos la funcionalidad del sistema sin cambiar el hardware. Sin embargo, la desventaja de esta flexibilidad es que la velocidad de actuación está por debajo del de un ASIC. El procesador debe leer cada instrucción de la memoria, determinar su significado, y sólo entonces lo ejecuta. Adicionalmente, el juego de instrucciones que pueden usarse por un programa se determina en el momento de la fabricación del procesador. Cualquier otro funcionamiento que sea llevada a cabo deberá construirse fuera de las instrucciones ya existentes. Esto produce un tiempo alto de ejecución. La computación reconfigurable llena el hueco entre el hardware (ASIC) y el software (Microprocesador), mientras consigue una actuación, potencialmente, más rápida que los microprocesadores mantiene un nivel más alto de flexibilidad que los ASICs. Este tipo de computación se consigue con la utilización de FPGAs (Field Programmable Gate Arrays). Estos dispositivos contienen una serie de bloques lógicos cuya funcionalidad se determina a través de múltiples celdas de SRAM. Estos elementos, también conocidos como bloques lógicos, se conectan entre sí mediante recursos de interconexión programables. De este modo, se pueden trazar los circuitos con las funciones lógicas dentro de los bloques lógicos y posteriormente programar las conexiones entre dichos bloques lógicos formando el circuito necesario dentro de la FPGA. Se han utilizado FPGAs y programación reconfigurable para acelerar una variedad de aplicaciones. Para lograr estas ventajas, para una amplia gama de aplicaciones, se utiliza la programación reconfigurable, normalmente se forman los sistemas con una combinación de lógica reconfigurable y microprocesadores de propósito general. El procesador realiza las funciones que no pueden hacerse eficazmente utilizando la lógica reconfigurable. En una FPGA hay tres factores principales que marcan su funcionamiento: Cómo se programa el dispositivo personalizandolo a una aplicación específica. Cuales son los elementos lógicos que contiene. Cómo se conectan los elementos lógicos para formar el circuito completo. Estos tres factores los repasaremos en las próximas secciones.
2. LAS FPGAs 2.1. Tecnologías de programación Se han desarrollado FPGAs con una variedad de tecnologías de programación. Los más conocidos son los anti-fuse y las celdas SRAM. Los anti-fuse están normalmente desconectados y se posicionan entre dos cables interconectables. Si aplicamos entre los extremos un voltaje elevado se conectarán los dos cables de forma permanente. Estos no sirven para sistemas reconfigurables donde los dispositivos deben cambiar contínuamente toda o parte de su programación. La mayoría de las FPGAs actuales se basan en celdas SRAM programables. Estas celdas poseen la información para realizar las conexiones entre los cables interconectables. Estas celdas se pueden programar y reprogramar fácilmente por lo que podremos modificar el comportamiento del chip sin tener que sustituirlo. Fig. 1- Estructura Antifuse Fig. 2- Interruptores programables controlados por SRAM También se pueden utilizar para programar las líneas de control de los multiplexores. Estos multiplexores los podemos utilizar tanto, en las salidas para obtener una salida biestable, utilizando un Flip-Flop tipo D, o no como en los LUTs. Los LUTs son unas pequeñas memorias que poseen varias funciones lógicas. Estos elementos se pueden comportar como cualquier función lógica dependiendo de las líneas de control. Fig. 3- Flip-Flop tipo D con bypass opcional y un LUT con tres entradas.
2.2. Bloques Lógicos Desde la introducción de las FPGAs, a mediados de los 80, se han realizado varias investigaciones acerca de los elementos de programación a insertar en los bloques lógicos. Una de las opciones es la de crear FPGAs en base a elementos PAL, selectores de funciones o sistemas formados por mezcla de funciones simples como las puertas NAND o XOR. Las FPGAs normalmente están formadas por bloques lógicos con un LUT de cuatro entradas y un Flip-Flop tipo D. Fig. 4-Bloque lógico básico, acarreo encadenado y Flip-Flop tipo D. 2.3. El ruteado Del mismo modo que se ha investigado, ampliamente, sobre la arquitectura de los bloques lógicos se ha investigado en el interconexionado de estos bloques. La mayoría de las FPGAs organiza la asignación del ruteado con el objeto de conseguir un conexionado rápido y eficaz entre las líneas y columnas de los bloques lógicos. Los bloques de conexión están formados por multiplexores programables para realizar las conexiones entre los bloques lógicos. Fig. 5-Arquitectura del ruteado de una FPGA.
3. FABRICANTES DE FPGAs. Vamos a mencionar algunos de los productos más utilizados. 3.1. Xilinx Xilinx se basa en una estructura en la que los bloques lógicos (CLB) están distribuidos formando una matriz, estos bloques se interconectan mediante canales verticales y horizontales. La familia XC4000, basada en SRAM, se caracteriza por bloques lógicos basados en LUTs. Tiene dos LUTs de cuatro entradas, que se corresponden con las entradas del bloque lógico. Esta estructura permite al CLB llevar a cabo una amplia gama de funciones lógicas. Los XC4000 contienen una circuitería que les permite realizar eficazmente operaciones aritméticas. Otra característica importante reside en los tipos de cables de interconexión que pueden ser cortos (recorren el tramo entre dos CLBs vecinos), más largos (recorren el tramo entre dos CLBs no vecinos) y muy largos que recorren la longitud entera o el ancho del chip. La capacidad de esta familia va desde 2000 hasta 15000 compuertas equivalentes. 3.2. Altera Fig. 5-Líneas de conexión XC4000. La serie FLEX8000, de Altera, está basada en SRAM y su capacidad va desde 4000 hasta más de 15000 compuertas equivalentes. La arquitectura la podemos ver en la Figura 6 donde cada LAB es un conjunto de bloques lógicos básicos llamados elementos lógicos (LE). Estos LE tienen interconexión local dentro del mismo LAB, la conexión local también se conecta a la interconexión global (FastTrack). La interconexión global está formada por líneas largas que atraviesan el dispositivo. Todos los cables del FastTrack son idénticos por lo que los retrasos de interconexión son más predecibles que en los FPGAs en los que se utilizan segmentos más cortos.
Fig. 6-Arquitectura del FLEX8000. 4. CONCLUSIONES La computación reconfigurable se está convirtiendo en un tema de investigación para las arquitecturas de computadoras, ya que utilizando esta posibilidad se pueden acelerar las partes de la aplicación que más lo requieran. Esto es debido a que la computación reconfigurable mantiene los beneficios del software y las aplicaciones de los ASICs. Del mismo modo que los ASICs proporcionan un método para trazar los circuitos en el hardware logrando una actuación más rápida que los microprocesadores y además permite la ejecución paralela de múltiples operaciones. Hay una gama de herramientas para implementar el circuito en la FPGA desde el método completamente manual hasta un método totalmente automático que utilizan un código de programa de alto nivel. Finalmente, la reconfiguración en tiempo de ejecución permite acelerar de una forma más eficiente debido a que permite modificar la configuración del hardware a lo largo del tiempo. 5. REFERENCIAS BIBLIOGRÁFICAS. [1] Journal of VLSI Signal Processing Systems, Kluwer Academic Publishers [2] IEEE Design & Test of Computers. [3] IEEE Computer [4] IEEE Transaction on Computers [5] IEEE Transaction on VLSI Systems [6] IEE Proceedings - Computers and Digital Techniques [7] Architecture of FPGAs and CPLDs: A Tutorial. S. BROWN; J. ROSE. [8] Reconfigurable Computing: A Survey of Systems and Software. K.COMPTON; S. HAUK.