Este documento describe los agentes hardware, que son circuitos electrónicos implementados en dispositivos reconfigurables como FPGAs que pueden realizar funciones de forma paralela y rápida. Los agentes hardware están compuestos de núcleos (cores) funcionales y de conocimiento. Estos núcleos pueden comunicarse y transmitir conocimiento a otros agentes hardware.
2. Introducción.
La tecnología de agentes no es solo aplicable al entorno
software, sino que esta puede ser aplicada a un entorno
hardware, mucho mas fiable y rápido.
Los agentes hardware no se componen de secuencias de
instrucciones, sino que son circuitos electrónicos en si
mismos, controlados o no por señales de reloj.
Para materializar los Agentes Hardware son necesario unos
dispositivo llamados FPGAs.
3. ¿Que son los FPGAs?
Son matrices de bloques lógicos programables (CLB), y en su
interior hay elementos de lógica computacional, memorias y
multiplexores, entre otras muchas cosas.
4. Formas de configurar un FPGA
Reconfiguración total, en tiempo de compilación o
reconfiguración estática.
Se descargan los bits de configuración (bitstream) para
configurar tanto los bloques funcionales, como las
conexiones.
Se tiene que detener la operación del FPGA, configurarlo
todo y volver a ponerlo en marcha .
Reconfiguración dinámica*.
Determinadas partes se actualizan, mientras otras estan
en funcionamiento.
5. Tipos de reconfiguración dinámica.
Único contexto: Se carga toda la configuración aunque
sólo se haya modificado una parte.
Multicontexto*: Existen varios grupos de bits de
configuración, permitiendo ser cargados en planos no
activos durante la ejecución. Permite la reconfiguración
parcial y en pipeline.
Otros métodos: prefetching de configuración, compresión
de la configuración, uso de caché de configuraciones en el
dispositivo (se reduce la cantidad de información
transmitida).
8. Metodología
Metodología basada en Java* (JBits).
Lo ve como objetos Java, de tal manera que puede hacer
uso de otros componentes usando la matriz de CLBs
dinámicamente.
Metodología basada en modificación directa del bitstram.
Extrae dinámicamente la parte del circuito del bitstream y
componer un bitestram parcial.
Existen dos flujos de diseño: manipulación directa de bits y
basadas en módulos (varios bitstrams parciales, uno total
para la carga inicial.)
9. Computo de la reconfiguracion
Los FPGAs se utilizan para implementar prototipos, pero el
hecho de que sea una unidad reconfigurable de
procesamiento (RPU), hace mucho mas versátil su utilización,
desde el punto de vista de la manipulación lógica en tiempo
de ejecución, como puede verse un bloque que permite la
ejecución de varias funciones en hardware (computo
espacial).
La tecnología permite aplicaciones: reconfiguración en
tiempo de ejecución con el
beneficio de reducción en el consumo de potencia.
• FPGAs de AMTEL.
• FPGAs Virtex de Xilinx*.
10. Ventajas e inconvenientes
Ventajas Inconvenientes
Mayor velocidad Uso de al menos un
Paralelismo módulo CPU, uso de
Estabilidad Software
Optimización Herramientas de
Tolerante a fallos desarrollo complejas
Estandarización del
mercado
11. Cores
A los módulos que ya tienen cierta envergadura y estabilidad
se les denominarán Cores.
Por tanto un Agente hardware es en si un Core, compuesto a
su vez por múltiples cores, tanto en su comportamiento (cores
activos), como en su base de conocimiento (memoria
externa).
En la actualidad podemos encontrar múltiples cores de código
abierto en www.opencores.org
Normalmente suelen ser CPU, unidades Aritmético-lógicas
especificas, comunicación (Eth,USB,UART).
12. Implementación
Un Agente Hardware, estará formado por una serie de cores
fundamentales, pero aquello por lo que se diferenciaran,son
por aquellos cores específicos de su base de conocimiento.
Ejemplo de tipos de Core de la base de conocimiento de un
robot.
Core de mobilidad
Core de adquisición y tratamiento de datos visuales
Core de generación de mapas virtuales
Core de comunicación
13. Características de los agentes
Reactividad: características ofrecidas por los cores
inherentes al agente, por condiciones físicas.
Pro-actividad: Acciones destinadas a un determinado
objetivo, uso paralelismo y prioridades.
Sociabilidad: Capacidad de comunicación, trasmitir
conocimientos.
Conocimiento adquirido y almacenado mor multiples
métodos, almacenamiento interno y externo.
14. Agente reactivo
Las agentes presentan cores fundamentales que no dependen
del conocimiento adquirido, sino que son inherente al agente
ya sea por sus características físicas o de arquitectura.
Ejemplos:
Físicas
Gestión de energía, desactivación de cores no utilizados,
necesidades de obtención de energía como valor.
Arquitectura
Gestión de recursos de memoria, CLBs y Bus-MACRO.
15. Bases del conocimiento
Los cores poseen elementos de memoria, si estos se modifican
afectará en tiempo de ejecución pero no en el bitstream para
posteriores cargas.
Por lo que estableceremos un core de memoria encargado de
procesar y almacenar el estado de los cores y los propios cores
en memoria exterior.
Esto permitirá la comunicación de conocimiento a otros
agentes.
Los cores necesitará inicializarse con datos genericos o
especificos, y sincronizarse para adquirir las habilidades
adquiridas
16. Comunicación
Comunicación basada en estandarización de protocolo.
Ejemplos.
Cores lingüísticos: a partir de cores de pronunciación,
procesamiento del lenguaje natural, diccionarios y
ontologías, el agente podrá mantener una conversación.
Cores expresivos: un adecuado protocolo de movimientos
en el caso de un robot, podria crear una comunicacion de
signos.
Cores específicos de comunicación entre Agentes: un
agente puede comunicar a otro cómo conducir, pasándole
cores que haya elaborado para una mejor precisión en la
conducción, junto con la memoria de inicialización,
aportándole las habilidades en la conducción.
17. Sistemas multiagentes
Ontología
Comunicación de bases del conocimiento, transmisión de
cores.
En Agentes Hardware, los elementos de ontologías son cores
que a su vez pueden hacer uso de otros cores, y que
contienen la memoria de inicialización y en algunas ocasiones
datos de sincronización, pues es una manera de transmitir
conocimientos y habilidades a otros agentes.
18. Aplicaciones practicas
En la actualidad y en el futuro veremos aplicada esta
tecnología en numerosos campos, pues es una tecnología
emergente y en evolución.
Aeronáutica (aviones y satelites)
Comunicación (routers y redes eléctricas)
Robotica y automoción
Sistemas de alto rendimiento y militar.
19. Bibliografía
Introducción a los FPGAs y el Cómputo Reconfigurable
Miguel Morales Sandoval
INAOE, 2006