ENTORNO DE TRABAJO PARA LA SIMULACIÓN HARDWARE DE UNA COMPUTADORA SENCILLA
←
→
Transcripción del contenido de la página
Si su navegador no muestra la página correctamente, lea el contenido de la página a continuación
ENTORNO DE TRABAJO PARA LA SIMULACIÓN HARDWARE DE UNA COMPUTADORA SENCILLA Fco. Javier Quiles, Manuel A. Ortiz, Carlos D. Moreno, J. Ignacio Benavides, Vicente J. Fernández, Nicolás Martínez Área de Conocimiento de Arquitectura y Tecnología de Computadores Escuela Politécnica Superior. Universidad de Córdoba el1qulaf@uco.es 1. RESUMEN En esta comunicación se describe un Entorno de Trabajo, desarrollado como Proyecto Fin de Carrera, que permite mostrar al alumno el funcionamiento de una computadora sencilla desde el punto de vista hardware, es decir a nivel de cronograma usando un simulador VHDL. Se define una estructura concreta, respecto al tipo de componentes desde el punto de vista lógico (registros, alu, memoria y unidad de control microprogramada) y buses e interconexiones internas, y un conjunto de instrucciones por defecto. A partir de ésta, el alumno puede configurar algunos aspectos de la Arquitectura, como son el tamaño de la palabra, el número de palabras de la memoria (Pila, datos y programa) e incluso definir sus propias instrucciones. El entorno ofrece todas las utilidades necesarias para editar el fichero fuente en lenguaje ensamblador, ensamblarlo, crear el modelo de simulación VHDL de la computadora con el contenido adecuado de las ROM de programa y microprograma, y finalmente realizar su simulación a nivel de cronograma. 2. INTRODUCCIÓN En la asignatura de Arquitectura de Computadores es habitual la utilización de simuladores de computadoras sencillas, cuya finalidad es mostrar al alumno el funcionamiento interno de un computador de la forma más fácil posible. Estos simuladores permiten por un lado, el desarrollo de programas utilizando un conjunto de instrucciones reducidas, y por el otro, la creación de nuevas instrucciones. Normalmente se define la estructura de estos computadores definiendo los registros y las operaciones que se pueden realizar sobre éllos. Se define un controlador cableado o microprogramado y una memoria o un sistema de memoria donde se almacenan las instrucciones y los datos. Es habitual que estos simuladores vayan mostrando en cada ciclo la operación que realizan las microinstrucciones sobre los registros visualizando su contenido. Sin embargo esta simulación está muy lejos de la realidad del hardware ya que no suelen mostrar las señales que generan las operaciones sobre los registros y mucho menos el cronograma de dichas señales. Hemos desarrollado un entorno de trabajo que pretende mostrar al alumno el funcionamiento de una computadora sencilla desde el punto de vista hardware. Partiendo de una estructura fija respecto a los componentes, el alumno puede configurar el tamaño de la palabra y el número de palabras de la memoria, crear sus propias instrucciones, editar el fichero fuente en lenguaje ensamblador, ensamblarlo, crear el modelo de simulación VHDL de la
computadora con el contenido adecuado de las ROM de programa y microprograma, y finalmente realizar su simulación a nivel de cronograma. A lo largo de la comunicación se describirá el entorno de trabajo, la arquitectura de la computadora y su aplicación a la docencia mediante un ejemplo. 3. DESCRIPCIÓN DE LA ARQUITECTURA DE LA COMPUTADORA La Organización de la Computadora Sencilla [1] está basada en la que se explica en las clases de teoría [2]. Como se puede observar en la figura 1 se trata de una Computadora de Arquitectura Von Neumann con memoria Pila y Unidad de Control Microprogramada. Además de la Unidad Aritmético-lógica y los registros básicos (MAR, OPR y PC), consta de un Registro de Propósito General (GPR), que comunica la memoria con el resto de componentes, y un Puntero de Pila para implementar las instrucciones que trabajan con este tipo de memoria. Figura 1. Organización de la Computadora
A continuación se analiza cada uno de los componentes. En todas las figuras se han nombrado los terminales de orden con la microoperación que habilitan, de forma que se pueda deducir directamente las microperaciones que realiza cada componente de la computadora. 3.1. Unidad Aritmético-Lógica Su estructura se muestra en la figura 2. Es del tipo basada en Acumulador. Consta de un sumador, un registro Acumulador y un registro F de un solo bit. Las microoperaciones que realiza la ALU son: Terminal de orden Microoperación ROLF_ACC Rotación a la izquierda del acumulador a través del flag F RORF_ACC Rotación a la derecha del acumulador a través del flag F NACC_ACC Complemento a 1 del contenido del acumulador ACC+1_ACC Incremento del contenido del acumulador 0_ACC Puesta a cero del acumulador GPR+ACC_ACC Suma los contenidos del GPR y el acumulador y almacena el resultado en el acumulador. El flag F almacena el acarreo 0_F Puesta a cero del flag F NF_F Complementa el valor del flag F 3.2. Memoria Consta de una memoria RAM, que almacena los datos, y otra tipo ROM, que contiene el programa que debe ejecutar la computadora. La ROM está mapeada en la parte baja del espacio de direccionamiento y la RAM en la parte superior. El número de palabras de ambos tipos es configurable por el usuario. Dado que se emplean dos tipos de memoria Figura 2. Estructura de la ALU diferentes que comparten el mismo bus de datos, se ha incluido un bloque de decodificación, que determina la memoria a la que se accede. En la operación de escritura (GPR_M) se almacena el dato que contiene el GPR en la palabra de memoria indicada por el MAR, y en la de lectura (M_GPR) se transfiere al GPR el contenido de la palabra indicada por el MAR.
3.3. Registro GPR Su función principal es la de transferir información con la memoria en las operaciones de lectura o escritura, que se realicen en ésta. Por tanto, al final de los ciclos de búsqueda almacena una instrucción y durante los de ejecución almacenará un dato o una dirección indirecta según el tipo de instrucción. Según esto, cuando almacena una instrucción se distinguen dos campos que evidentemente vienen definidos por el formato de instrucción. Éstos son el de código de operación y el de dirección. El campo de código de operación siempre tiene un tamaño fijo de 6 bits y se almacena en los 6 bits de mayor peso. El campo de dirección tiene un tamaño variable y se almacena en los bits restantes de menor peso. n-1 .......................... n-6 n-7 ..................................... 0 Código de operación Dirección Por otra parte se le puede transferir el contenido del PC (PC_GPR) o del Acumulador (ACC_GPR). Respecto a las microoperaciones de procesamiento solamente puede incrementar su contenido (GPR+1_GPR). Genera una señal de estado Z a la Unidad de Control, que se pone a 1 cuando su contenido es cero. 3.4. Registro PC Almacena la dirección de la instrucción que se va a leer en el ciclo de búsqueda. Por ello, las microoperaciones que debe realizar son las de incremento (PC+1_PC) y la de transferencia del contenido del campo de dirección del GPR (GPR_PC). 3.5. Registro OPR Contiene el código de operación de la instrucción que se va a ejecutar. Por tanto, la única microoperación que realiza es la de almacenar el contenido del campo del código de operación del GPR (GPR_OPR). 3.6. Pila La computadora se puede configurar para implementar en una zona de la RAM una memoria Pila. Esta es del tipo expand-down. Por tanto, se necesita un Puntero de Pila que realiza la microoperación de Figura 3. Estructura del Controlador incremento (SP+1_SP) en la operación de Push y la de decremento (SP-1_SP) en la de Pop.
3.7. Registro MAR Selecciona la posición de memoria que se accede en los ciclos de búsqueda y de ejecución. Por tanto, las microoperaciones que realiza están determinadas por las posibles fuentes de la dirección: carga el contenido del campo de dirección del GPR (GPR_MAR), carga el contenido del PC (PC_MAR) y carga el contenido del Puntero de Pila (SP_MAR). 3.8. Unidad de Control Es del tipo microprogramada [3]. En la figura 3 se muestra su estructura. A partir del código de operación (OPR) la unidad lógica1 genera la dirección de inicio donde comienza la secuencia de micropalabras correspondientes a la ejecución de cada instrucción. Esta se carga en el registro de dirección de memoria (CMAR). La CROM contiene todas las micropalabras correspondiente a los ciclos de búsqueda y ejecución de cada una de las instrucciones. Tiene una organización de 256 x 32. El formato de la micropalabra es el siguiente. 31............................................11 10 9 8 7......................................0 Señales de orden B I R Dirección de salto Control Lógica2 La Unidad Lógica2 a partir de los bits B, I y R de las micropalabras y el contenido de los flags Z y F controla las entradas B, I y R del CMAR para determinar si incrementa su contenido (I), o salta a la dirección indicada por la micropalabra (B) o la de comienzo de la rutina de ejecución de la instrucción (R). 4. DESCRIPCIÓN DEL ENTORNO DE TRABAJO El objetivo principal por el que se desarrolló esta herramienta fue el de disponer de un entorno de trabajo que realizase de forma automática la simulación hardware mediante un simulador VHDL del funcionamiento de una Computadora sencilla, de forma que el alumno pudiese ver a nivel de cronograma la secuencia de microoperaciones y la evolución de los contenidos de los registros, durante la ejecución de un programa definido por él mismo. Por ello se ha diseñado con las siguientes características: - Definición de un conjunto básico de instrucciones - Editor del fichero fuente en lenguaje ensamblador - Microemsamblador que permite la creación de instrucciones nuevas y determinar el contenido de la CROM - Ensamblado automático del fichero fuente que determina el contenido de la ROM - Generación automática de los ficheros VHDL [4][5][6] que describe el funcionamiento de la Computadora incluyendo los contenidos de la CROM y la ROM - Ejecución automática de la herramienta Simulate de OrCAD 7.20 [7]. Ello implica que se cree previamente todos los ficheros necesarios, como son el de proyecto de OrCAD y el de estímulos. El entorno de trabajo tiene dos partes diferenciadas. La primera de ellas, desarrollada en Visual Basic, permite introducir el programa utilizando las instrucciones predefinidas o creando nuevas instrucciones definidas por el propio usuario. Una vez editado el fichero fuente se realiza la compilación y si no se han producido errores se generan los ficheros VHDL y se ejecuta Orcad.
La segunda parte del entorno es el entorno de Orcad Simulate que realiza la visualización del resultado de la simulación. 4.1. Ejemplo de Simulación con el Entorno de Trabajo Para mostrar el funcionamiento y la utilidad del entorno de trabajo se va a realizar la simulación de un programa que calcule la parte entera de la raíz cuadrada de un número entero. El proceso de simulación consta de varios pasos, que corresponde a los cuatro primeros comandos de la barra de menú: 1. Crear proyecto 2. Especificar el conjunto de instrucciones de la Computadora 3. Editar el fichero fuente 4. Simular el funcionamiento mediante la utilidad Simulate de OrCAD 7.20 4.1.1. Crear proyecto Se empieza creando un proyecto seleccionando Nuevo del menú Archivo. Se abre una ventana en la que se configura la Computadora, indicando la anchura de la palabra y el número de palabras de la ROM, RAM y PILA. En nuestro ejemplo se selecciona 16 bits de anchura de palabra, 512 palabras para la ROM y la RAM y cero palabras para la PILA. Una vez validado los datos de configuración se vuelve a la ventana principal del entorno de trabajo, en la que como se puede ver en la figura 4, se indica la arquitectura final de la Computadora. Los menús se van habilitando conforme se avanza en el flujo de trabajo indicado anteriormente. Así, se puede comprobar como están habilitados los menús Archivo y Diseño, que correspondería al siguiente paso. Figura 4. Ventana inicial del Entorno de Trabajo
4.1.2. Especificar el conjunto de instrucciones de la Computadora En este paso se indica las instrucciones de la Computadora. El número máximo de instrucciones es de 64. Éstas se pueden seleccionar entre la instrucciones por defecto y los creadas por el propio usuario. La creación del conjunto de instrucciones se realiza mediante el comando Diseño. Antes de indicar el proceso, se analizará el algoritmo para comprender las instrucciones que se seleccionan y las que debe crear el alumno. El algoritmo consiste en restar sucesivamente al número inicial los números impares empezando desde uno hasta obtener un resultado negativo. El número de veces que se ha realizado la resta menos uno será el resultado buscado. Se necesitan tres variables que se almacenarán en la memoria RAM: - Número. Almacena el dato inicial. Su dirección es la 512. - Número_impar. Contiene los números impares que se deben restar. Se inicializa con el valor 1. Su dirección es la 513. - Resultado. Se inicializa con el valor 0. Su dirección es la 514. Se empieza cargando Número en el acumulador y se le resta Número_impar. A continuación se analiza el bit de signo. Si es positivo se incrementa Resultado y se le suma dos a Número_impar, y se repite el proceso de resta y comprobación. Si es negativo se termina el proceso. Figura 5. Definición del conjunto de instrucciones Para simplificar el programa se crearán dos instrucciones, SUB dirección, que resta el contenido de la posición de memoria indicada por el campo de dirección al acumulador y almacena el resultado en éste, y INCM dirección, que incrementa el contenido de la posición de memoria indicada por el campo de dirección.
La figura 5 muestra la ventana de especificación del conjunto de instrucciones. El menú Instrucciones Predefinidas permite seleccionar las instrucciones del conjunto declarado por defecto. Para crear las instrucciones anteriores se selecciona Instrucciones Nuevas. Como se muestra en la figura hay que indicar la secuencia de microoperaciones del ciclo de ejecución. El conjunto de instrucciones final de la Computadora estará compuesto por las indicadas en las dos listas de la izquierda. 4.1.3. Edición del fichero fuente Para editar el fichero fuente se selecciona el comando Código. Éste ejecuta automáticamente el Bloc de Notas de Windows. En la figura 6 se muestra el contenido del fichero fuente en lenguaje ensamblador de la Computadora. Se empieza cargando el número original almacenado en la posición 512 en el acumulador. Esto se realiza mediante las dos primeras instrucciones. Posteriormente se entra en un bucle indicado por la etiqueta del mismo nombre, que resta sucesivamente los números impares almacenados en la posición 513 empezando desde el valor 1. Después de la resta se comprueba el valor del Figura 6. Fichero fuente bit de signo del acumulador mediante la instrucción SFZ. Ésta salta la siguiente instrucción (Halt) si el flag F está a cero. Para transferir el bit de signo a F se ejecuta la instrucción de rotación a la izquierda del acumulador a través del acumulador (ROLF). Si F es 1 (número negativo) se ejecuta la instrucción HALT, que detiene la ejecución de la máquina. Si F es 0 (número positivo) indica que no ha terminado el proceso. Figura 7. Edición y compilación del fichero fuente Por tanto se incrementa la posición 514, que contiene el resultado, y se incrementa dos veces la posición 513 para
actualizarla con el valor del siguiente número impar, y finalmente se salta al inicio del bucle (JMP BUCLE:). Después de salvar el fichero fuente y cerrar el editor se abre la ventana de la figura 7. Para ensamblar el fichero fuente se hace clic en el botón Aceptar. Si no hay errores se vuelca el contenido de la memoria RAM en la lista de la derecha. Se puede observar que el contenido de las posiciones de memoria 512, 513 y 514 coincide con el indicado en las directivas del fichero fuente. Haciendo clic en el botón Siguiente se cierra la ventana y se crea el modelo en VHDL de la Computadora. Ésta se describe como un diseño jerárquico, por lo que constará de varios ficheros VHDL, un raíz y uno para cada componente de los indicados en la figura que describe la organización de la Computadora. Evidentemente la ROM contiene el programa en lenguaje máquina obtenido al ensamblar el fichero fuente, y la CROM las rutinas correspondientes a la ejecución del ciclo de búsqueda y de cada una de las instrucciones del conjunto creado en el paso anterior. 4.1.4. Simulación Para realizar la simulación del funcionamiento se hace clic en el menú Simulación. El entorno de trabajo automáticamente crea el fichero de proyecto, que define los ficheros VHDL del diseño, y el de estímulos compatibles con OrCAD Express 7.20, y ejecuta la utilidad Capture. Figura 8. Cronograma de la simulación de la raíz cuadrada de 9 Seleccionando Simulate del menú Tools se ejecuta el simulador de modelos VHDL de OrCAD Express. En la figura 8 se muestra la parte final de la simulación. La señal instrucción indica la instrucción que ejecuta la Computadora.
En el ejemplo se realiza la raíz cuadrada de 9. Se puede observar la ejecución de la parte final del bucle, que incluye la resta, comprobación del bit de signo del acumulador y detención de la ejecución. En la parte izquierda del cronograma se puede ver como al ejecutar la instrucción INCM 514 (MAR = 20216), el registro GPR contiene el valor 3, que es el resultado correcto. 5. CONCLUSIONES La utilización de este entorno es válido para las asignaturas de Estructura de Computadores y Arquitectura de Computadores donde habitualmente se utiliza una Computadora Sencilla para la realización de problemas y prácticas. A pesar de que el entorno genera ficheros VHDL a partir de los que se obtiene la simulación, no es necesario que el alumno tenga conocimientos de VHDL ya que estos se generan de forma transparente, por lo que el alumno solamente necesita conocer la arquitectura de la computadora y OrCAD Simulate. Éstas son las herramientas que utilizamos habitualmente en prácticas de simulación de las asignaturas de Tecnología de Computadores y Sistemas Digitales, que se cursan con anterioridad. Este entorno es el complemento idóneo, a otros simuladores software que se han desarrollado también para esta computadora. Por tanto, el alumno puede utilizar un simulador u otro o ambos dependiendo de cual sea el interés: comprobar un programa y/o estudiar además su comportamiento hardware. Uno de los objetivos con los que se desarrolló el entorno de trabajo fue el de minimizar el número de pasos y facilitar el proceso de simulación. Como se ha demostrado mediante el ejemplo del apartado 4, éstos se han cumplido ya que solamente hay que realizar 4 pasos, y a su vez se guía al alumno durante todo el proceso, ya que los comandos se van habilitando conforme se termina cada fase. 6. REFERENCIAS [1] V. J. Fernández, N. Martínez, “Entorno para la implementación de una computadora microprogramada básica configurable y generación de su modelo de simulación en VHDL”, Proyecto Fin de Carrera, Junio de 2003. [2] H. Taub,” Circuitos digitales y microprocesadores”, Ed. McGraw Hill, 1991. [3] M. Morris Mano,” Arquitectura de computadoras”,3ª Ed. , Prentice Hall, 1994. [4] P. Ashenden, “The Designer`s Guide to VHDL”, Ed. Morgan Kaufmann, San Francisco, 1995. [5] IEEE Society, “IEEE Standard VHDL Language Reference Manual: IEEE Std. 1076-1987”, New York, NY, 1988. [6] IEEE Society, “IEEE Standard VHDL Language Reference Manual: IEEE Std. 1076-1993”, New York, NY, 1994. [7] E. Sáez, F.J. Quiles, “OrCAD Express V.7.20: Guía Rápida para la Iniciación al Diseño y Simulación de Sistemas Digitales”, Universidad de Córdoba, 1999.
También puede leer