ENTORNO DE TRABAJO PARA LA SIMULACIÓN HARDWARE DE UNA COMPUTADORA SENCILLA

Página creada Gregorio Naranjo
 
SEGUIR LEYENDO
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