Laboratorio Remoto de Estructuras de Computadores basado en Hardware Reconfigurable Grediaga A., Cuenca S., Colom J.F, Durá J.A. Departamento de Tecnología Informática y Computación. Universidad de Alicante. angel.grediaga@ua.es, sergio@dtic.ua.es, jfcolom@dtic.ua.es, jdura@dtic.ua.es http://dtic.ua.es Resumen. Este artículo describe el desarrollo sobre hardware reconfigurable de un prototipo de computador didáctico elemental empleado en la docencia de Arquitectura de Computadores (segundo curso de Ingeniería Informática). Además, se ha diseñado e implementado una plataforma software para compartir el computador la cual permite la ejecución de programas y acceso a los registros y memoria del prototipo remotamente mediante un protocolo basado en componentes Web Services. El conjunto se ha sometido a un procedimiento de pruebas automatizadas dando como resultado un funcionamiento correcto y factible desde el punto de vista de la carga esperada del sistema. 1 Introducción MaNoTaS (Máquina No Tan Sencilla) es un computador didáctico especificado [1] para su uso en la docencia de asignaturas relacionadas con estructuras de computadores y similares. Utilizando esta especificación se desarrolló un simulador software [2][3] que ha sido utilizado en la realización de prácticas de Estructuras de Computadores en los estudios de Ingeniería en Informática de la Universidad de Alicante. Un objetivo de este proyecto es realizar una implementación en hardware reconfigurable del computador didáctico. De esta forma, se proporciona al alumno un entorno en el que puede repetir las prácticas realizadas con el simulador software existente sobre un dispositivo físico. Además, el hardware reconfigurable posibilita la observación de los efectos producidos ante determinadas modificaciones de la arquitectura. Por otro lado, la necesidad de compartir un número limitado de recursos en el aula motiva el diseño e implementación de un sistema genérico de acceso compartido y remoto. De esta manera, el alumno puede ejecutar sus desarrollos desde su puesto como si tuviera instalado en el mismo una unidad del recurso. Al ser un sistema basado en el protocolo HTTP, también se facilita el trabajo de casa y se prepara la adaptación a los créditos ECTS (Sistema Europeo de Transferencia de Créditos) [4]. Tratándose de una infraestructura genérica resulta factible su utilización para la compartición y acceso a otros sistemas de forma similar. En cuanto a otros trabajos realizados en esta línea, [5] presenta un marco pedagógico para procesadores digitales de señal que explota la capacidad de síntesis e implementación de prototipos que proporciona el hardware reconfigurable y herramientas relacionadas. En [6] se propone una aplicación web para gestión y carga de ficheros .BIT en una plataforma reconfigurable XS40. También en [7] se presenta una aplicación web que permite compilar descripciones de hardware y configurar una plataforma Labomat3, facilitando la compartición del recurso mediante un sistema de reservas. En [8] se ha desarrollado una plataforma cliente/servidor que permite configurar un CPLD, ejecutar comandos remotamente sobre la tarjeta y visualizar las salidas mediante una WebCam. Finalmente, [9] muestra una aplicación concreta de hardware reconfigurable accedido remotamente mediante un sistema cliente/servidor. En este proyecto, se ha empleado una tarjeta XS40 de XESS [10] para implementar el computador didáctico en VHDL. El acceso remoto se proporciona mediante un sistema basado en Web Services [11]. Se trata de un conjunto de estándares que incorpora las últimas tendencias en desarrollo de componentes (HTTP, XML) [12]. Primero se describen cada uno de los componentes que forman parte de la arquitectura del microprocesador y su interfaz externa de control, así como la implementación en VHDL. A continuación se describe una interfaz gráfica de usuario para la ejecución de programas y la infraestructura para el acceso remoto desde programas cliente hechos por el alumno. La propia interfaz gráfica puede acceder remotamente al microprocesador mediante dicho sistema. 2 Arquitectura de MaNoTaS MaNoTaS es un computador de tipo Von Neumann de longitud de palabra de 8 bits de datos y 16 bits de direcciones y capacidades similares al 8085 de Intel diseñado con fines educativos. La figura 1 muestra la estructura original de MaNoTaS. Los elementos principales de MaNoTaS son: - Ruta de datos. Contiene la unidad aritmético-lógica, banco de registros, acumulador, registros y multiplexor de direcciones, registro de flags y memoria. - Unidad de control. Genera las señales de control. La especificación original de MaNoTaS presenta varias alternativas para su implementación. En este caso se ha elegido implementarla utilizando la técnica del contador de secuencia. - Interfaz de control externo. Este elemento no se encuentra en el diseño original de MaNoTaS y se añade para permitir el control de MaNoTaS desde el puerto paralelo. Permite la lectura y modificación de registros y memoria y la ejecución en modo paso a paso o continuo. Fig. 1. Estructura de MaNoTaS 3 Diseño de la Interfaz de Control Externo (ICE) La ICE se añade al diseño de MaNoTaS para permitir examinar y manipular los elementos que componen la ruta de datos dado que el objetivo del proyecto no es solo demostrar que es posible implementar el computador sobre un dispositivo físico sino crear una herramienta que pueda ser utilizada con fines didácticos. En la figura 2 se puede ver un diagrama con los componentes de la ICE y su conexión con la unidad de control de MaNoTas. La ICE controla el funcionamiento de MaNoTaS mediante dos mecanismos: - El multiplexor de señales de control es gobernado por la ICE mediante la señal ICE_MUX y determina si la ruta de datos recibe las señales generadas por la Unidad de Control de Manotas o por la ICE. - La señal UC_FaseCero generada por la Unidad de Control de MaNoTaS se activa al final de cada instrucción y provoca el reinicio del contador de fases para ejecutar la fase cero de la siguiente instrucción. La ICE utiliza esta señal para determinar cuando puede tomar el control de la ruta de datos dado que hacerlo en mitad de la ejecución de una instrucción tendría consecuencias no deseadas. Cuando esto se produce la ICE activa su señal ICE_FaseCero lo que mantendrá al contador de fases permanentemente en la fase cero mientras la ICE tenga el control de la ruta de datos. Una vez finalice la ICE la operación solicitada por el puerto paralelo, y si se ordena continuar la ejecución, la ICE desactivará la señal ICE_FaseCero con lo que la Unidad de Control de MaNoTaS continuará con la ejecución de instrucciones. Fig. 2. La ICE y la Unidad de Control 4 Implementación del microprocesador Se partía de una especificación y diseño anterior del computador y se intentó respetar al máximo este diseño dentro de los límites impuestos por la tecnología utilizada para su implementación. Las diferencias introducidas en el diseño han sido: - Memoria. El diseño de MaNoTaS suponía una memoria síncrona de 64Kb, pero la placa XS 40 solo consta de una memoria asíncrona de 32Kb. Esto ha obligado a introducir fases de espera en las instrucciones que escriben en memoria y las instrucciones que escriban en posiciones de memoria superiores a la 7FFF se ejecutan pero carecen de efecto, las lecturas de posiciones superiores a la 7FFF obtienen un valor indeterminado. - Introducción del Interfaz de Control Externo. - Memoria de vídeo: Restricciones de espacio obligaron a reducir el tamaño de la memoria de vídeo de 32 a 7 bits. Como herramienta de diseño y síntesis se utilizó Foundation 2.1 de Xilinx. Cada elemento fue implementado como un módulo VHDL independiente y comprobado de forma individual suministrándole señales a través del puerto paralelo. Una vez completados todos los módulos estos se unen en un esquema de alto nivel creado con Foundation, el cual realiza la síntesis. 4.1 Verificación de la arquitectura Para verificar la corrección de la implementación realizada se desarrollo una aplicación que comprueba de forma automática el funcionamiento de todos los elementos del sistema. Esta aplicación realiza las siguientes operaciones: - Memoria. Realiza escrituras y lecturas secuenciales y aleatorias en memoria verificando que los valores leídos se corresponden con los escritos. - Registros. Escribe el rango completo de valores que pueden contener los registros y comprueba que se lee el valor escrito. - Instrucciones. Ejecuta todo el conjunto completo de instrucciones con diferentes valores de entrada y verifica que tras la ejecución de la instrucción todos los registros y memoria de MaNoTaS contienen los valores apropiados. - Dispositivos de entrada salida. Realiza operaciones E/S y verifica el correcto estado del computador tras estas operaciones. En la figura 3 se puede observar la aplicación de verificación tras finalizar su ejecución. En esta figura se puede observar 3 ejecuciones de la aplicación. En la primera se apagó la placa y en la segunda se introdujo valores incorrectos con una aplicación de acceso al puerto paralelo ejecutándose simultáneamente. Fig. 3. La aplicación de verificación La aplicación de verificación permitió detectar múltiples errores, la mayoría derivados de la incorrecta trascripción de un cero o un uno de la tabla que genera las señales de control. Algunos de estos errores no son observables en la ejecución de programas simples por lo que hubiesen pasado inadvertidos sin el uso de una herramienta de verificación exhaustiva. 5 Software de usuario Al simulador de MaNoTaS existente se le ha añadido una interfaz gráfica que permite el acceso a todos los recursos del microprocesador implementado sobre hardware reconfigurable. También se ha añadido la interfaz de acceso remoto. De esta forma el alumno tiene una herramienta integrada que le permite realizar el ciclo completo de desarrollo de un programa sobre la arquitectura MaNoTaS, el cual se puede observar en la figura 4. Fig. 4. Flujo de diseño utilizando las herramientas software para MaNoTaS 6 Infraestructura para acceso remoto En este punto se define la solución implementada al problema del acceso remoto a la tarjeta configurada con el microprocesador didáctico. Como veremos, gran parte del software desarrollado puede utilizarse sin modificaciones para proporcionar acceso remoto a cualquier recurso de tipo procesador, esto es, capaz de ejecutar un programa en un determinado lenguaje en un tiempo limitado por el usuario o el sistema. El sistema debe proporcionar un procedimiento que permita al usuario ejecutar transparentemente un programa en el microprocesador. En el contexto que nos ocupa, consideramos que el usuario es alguien que desea producir un software que accede al recurso remoto. Entendemos por diseño transparente aquel que permite al usuario concentrarse únicamente en la utilización del recurso, de manera similar a como si estuviera instalado localmente en su plataforma. Dicho de otra forma, el diseño planteado oculta al usuario los detalles del mecanismo de acceso remoto. La figura 5 muestra los tres grandes bloques en los que se ha dividido el sistema y los servicios que ofrece cada uno de ellos Recurso Red TCP/IP Plataforma del usuario Servidor Web Cliente Librería Cliente Servidor Web Services Planificador Driver Fig. 5. Infraestructura de acceso remoto − − Driver: interactúa con el recurso compartido. Concretamente, se encarga de la carga de instrucciones y datos en la memoria del microprocesador, iniciar la ejecución y detenerla si se supera un intervalo de tiempo determinado. Estas operaciones son en gran medida dependientes del recurso, por lo que el driver se desarrolla exclusivamente para el acceso a la máquina didáctica. En suma, proporciona la función de ejecutar un programa en el lenguaje del recurso mediante los parámetros especificados en la tabla 1. Planificador: gestiona el acceso al recurso. Es el bloque responsable de identificar al usuario, recibir sus peticiones de ejecución, determinar si tiene o no acceso al recurso, y planificar la ejecución según la prioridad del usuario. Este bloque es altamente reutilizable, en sentido que puede emplearse para gestionar la compartición de cualquier recurso que soporte la operación de ‘ejecución’, esto es, cualquier procesador. − Librería cliente: es la parte que se entrega al usuario, y que le facilita el acceso al recurso. Proporciona al cliente la función de ejecutar remotamente un programa en el lenguaje del recurso mediante los parámetros especificados en la tabla 2: El usuario puede interactuar con el sistema invocando los procedimientos que proporciona la librería y construyendo aplicaciones que hacen uso del recurso remotamente, sin que sea necesario que tenga en cuenta los detalles de la comunicación. Algunas de estas aplicaciones pueden ser interesentes para facilitar la realización de trabajos prácticos, como es el caso de la presentada en el punto 5 (Interfaz de Usuario). Otras aplicaciones pueden considerarse ejercicios o trabajos prácticos en sí mismos, por ejemplo “Compruébese el rendimiento de una versión de un algoritmo A en MaNoTaS, donde A recibe un valor numérico N pasado como parámetro en línea de comandos por el usuario que efectúa la prueba. Ejecutar una batería de 100 pruebas con valores aleatorios de N y obtener la media del tiempo de ejecución”. La librería cliente permite invocar un servicio del servidor enviándole los parámetros correspondientes. En el caso que nos ocupa, esta información consiste esencialmente en el programa a ejecutar en el microprocesador y los datos de configuración. La librería cliente se encarga de convertir los parámetros en una cadena de bytes para poderlos transmitir a través de un canal de comunicaciones. Por su parte, el servidor tiene que interpretar la cadena de bytes para obtener los parámetros y acceder al microprocesador didáctico. Para llevar a cabo estas actividades se requiere: − − Un protocolo de comunicación entre cliente y servidor Un criterio para transformar los parámetros de utilización en cadenas de bytes y viceversa, lo que denominaremos formato Para ello se ha elegido Web Services, que es un conjunto de estándares no propietarios agrupados por el World Wide Web Consortium (W3C), y proporciona una solución para cada uno de los dos puntos anteriores. Como protocolo de comunicación se utiliza el ampliamente extendido protocolo HTTP. El bloque planificador se ha implementado como un componente software que se ejecuta en el servidor web Tomcat 5.0 (proyecto Apache Jakarta) [13] utilizando JAX-RPC (Sun microsystems) [14] Web Services proporciona un marco de desarrollo idóneo para sistemas abiertos de acceso remoto a recursos al ser multiplataforma y ofrecer niveles de abstracción que facilitan su uso, características que no ofrecen al completo otras soluciones como DCOM o CORBA. El protocolo de acceso remoto ha sido verificado mediante una aplicación que simula varios usuarios realizando peticiones al servidor. Se concluye de estas pruebas que es capaz de soportar un nivel de carga de 50 usuarios accediendo simultáneamente. 7 Conclusiones Se ha conseguido realizar una implementación del computador MaNoTaS con éxito, utilizando para ello una FPGA. La implementación es compatible con el simulador de MaNoTaS existente y ha sido verificada exhaustivamente. Además, se ha dotado al sistema de una infraestructura reutilizable que permite el acceso compartido y remoto a través de Internet. Esta misma infraestructura, podrá utilizarse para acceder a otras posibilidades de desarrollo futuras como, por ejemplo, una implementación segmentada del computador didáctico. Referencias 1. Grediaga A., Rico L., Soriano A., Párraga, A.: ESTRUCTURAS DE COMPUTADORES un computador ejemplo: MaNoTaS. Universidad de Alicante. 2. Simulador de la Máquina No Tan Sencilla (MaNoTas). IV Jornadas de Enseñanza Universitaria de la Informática (Jenui'1998). Andorra 3. Simulador de un Computador Ejemplo (MaNoTaS). Diseño y simulación en Pspice. Artículo en el Seminario Anual de Automática, Electrónica Industrial e Instrumentación (SAAEII/ 99). Madrid 99 4. http://www.eees.ua.es/ects.htm 5. Tyson S. Hall, David V. Anderson, Member, IEEE: A Framework for Teaching Real–Time Digital Signal Processing with Field–Programmable Gate Arrays. Georgia Institute of Technology, Atlanta. 6. Gómez J.A., Martín A., Rodríguez D., Sánchez J.M., Vega M.A : Acceso Remoto a Plataformas de Prototipado Reconfigurable. Universidad de Extremadura 7. González I., Gómez F.J., Martínez J.: LabomatWeb: Recursos Reconfigurables Remotos vía World Wide Web (RW)3 . Universidad Autónoma de Madrid 8. García Zubía J., Larrauri I., Angulo J.M, y Kahoraho E.: Programación y Acceso Remoto de PLDs. Laboratorio Ubicuo. Universidad de Deusto, Bilbao. 9. Rodríguez D., Zarallo F., Conejo I.: “Labograph”: Sistema de Información Gráfica sobre Plataforma Labomat 3. Universidad de Extremadura 10. http://www.xess.com 11. Información sobre Web Services en W3C: http://www.w3.org/2002/ws 12. Schmelzer R. y otros: “XML and Web Services Unleashed”. Editorial SAMS. Páginas 9 y ss; 592 y ss. ISBN 0-672-32341-9 13. Información sobre el servidor web Tomcat http://jakarta.apache.org/tomcat/tomcat-5.0-doc 14. Información sobre JAX-RPC y todas las herramientas relacionadas con Web Services de Sun microsystems: http://java.sun.com/xml/jaxrpc