Laboratorio Remoto de Estructuras de Computadores

Anuncio
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.
[email protected], [email protected], [email protected], [email protected]
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
Descargar