Está en la página 1de 5

Laboratorio 3 - Simulación Base PDUA

Andrés David Gómez B - Angela María Benítez L - Abelardo Valdivieso A


Pontificia Universidad Javeriana
Organización de Computadores
2 de abril de 2020

Resumen
El objetivo principal de este laboratorio es familiarizarse con el procesador PDUA descrito en VHDL
mediante las simulaciones del programa de base que tiene el procesador, permitiendo entender los componentes
principales y sus respectivas funciones.

Introducción
“El procesador actúa como el cerebro de la computadora, ejecuta programas, envía y recibe señales a los
dispositivos conectados para mantener la computadora en funcionamiento. Es el encargado de manejar todas las
instrucciones básicas del sistema.” Por tal razón es importante entender su funcionamiento, como esta compuesto
y como reacciona a diferentes señales. La manera más fácil de entender el entorno del procesador es mediante
las simulaciones de este, así que en este laboratorio se ha simulado el procesador PDUA con un programa base
incluido.

1
1. Prueba de escritorio del pseudo-código y explicación de su fun-
cionamiento general

Figura 0. Prueba de escritorio

En la prueba de escritorio se evidencia los valores que toma ACC y A durante el funcionamiento del sistema.
primero se ejecuta la instrucción JUMP MAIN que tiene como objetivo llevar pc hasta la dirección indicada en la
segunda posición de memoria ROM, con dirección de la intrucción (3), por lo cual ACC y A son 0, adicional a
eso realiza una verificación de interrupcion antes de llevar pc a la direcció indicada..
La segundo instrucción que se ejecuta es MOV ACC,CTE que asigna el valor de una constante(0x02) en ACC,
como se evidencia A sigue siendo 0.
La tercera instrucción que se ejecuta es MOV A,ACC que tiene como función guardar el valor del registro ACC
en el registro A, A=0x02 y ACC=0x02.
La cuarta instrucción que se ejecuta es MOV ACC, CTE que ahora lo que hace es cambiar el valor de ACC por
otra constante dada en la segunda posicion de memoria de la misma instrucción(0xDC), entonces ACC=0xDC y
A=0x02.
La quinta instrucción que se ejecuta es OTRA: ADD ACC, A que se encarga de realizar la suma entre ACC y
A, almacenando el resultado en ACC, por lo cual ACC=0xDE y A=0x02.
La sexta intrucción que se ejecuta es JC FIN que se encarga de revisar el registro ACC, si este presenta un
desbordamiento pc tomará el valor que ocupa la segunda posición de memoria de la instrucción(0x0D), por lo
cual ACC=0xE0 y A=0x02. Si no ocurre el desbordamiento de ACC se ejecuta la siguiente instrucción.
La septima instrucción que se ejecuta es JMP OTRA que tiene como función saltar el pc hasta la intrucción
OTRA descrita previamente.
La octava y ultima instrucción que se ejecuta es FIN: JMP FIN, esta es una intrucción de salto, donde pc toma
el valor indicado en la segunda posición de memoria de la instrucción(0x0D) dando por terminado el programa.
Esta función solo se ejecuta si ACC llega al desbordamiento, es decir ACC=0x00, A=0x02 y C=0x01(carry), por
lo cual el programa solo se ejecuta hasta que ACC=0xFE y A=0x02, posterir a esto ocurre el desbordamiento.
Al finalzar la prueba de escritorio analizamos que el programa tiene el comportamiento de un bucle while y
un posible uso de este seria como timer, donde podriamos ajustar el tamaño y la duración al cambiar los valores
dados para ACC y A.

2
2. Simulaciones y análisis de las mismas
A continuación se presentan las simulación del procesador PDUA, la primera simulación se ha divido en 3
partes para tener una mejor visualización de esta, la segunda simulación se dividió en dos y esta difiere de la
primera en el cambio de constantes.

Figura 1. Simulación Primera Parte

De la Figura 1. se puede observar que inicialmente se tiene la señal de reloj clk, periodo de 1000 ns, una señal
ins la cual permanece siempre en bajo y una señal de reset rstn la cual es activa en bajo, cuando esta sube permite
inicial al sistema.
Cuando rstn está en alto se observa que el acumulador toma un valor constante, luego este valor se mueve al
registro A y finalmente el acumulador vuelve a tomar un valor constante DC. Al terminar este proceso se tiene la
suma del valor constante en A con el valor presente en el Acumulador, esto se va a repetir hasta que haya un carry
out en su suma, esta señal está representada con la letra C, en la figura 1 se observa que al momento de hacer
la primera suma permanece en bajo, puesto que aun no hay carry out. PC es la señal del contador de programa,
este se ira incrementando de uno en uno hasta que llegue a la instrucción de suma (dirección 8), donde esta se
repetirá hasta el momento del salto condicional el cual depende de un carry out. La dirección de la ROM 02 no
se observa completamente debido al tamaño de la simulación y se ejecuta en un tiempo inferior al de las otras
direcciones, en este se revisa si hay una interrupción antes de que se ejecute el programa, como no encuentra
ninguna este continua.
La señal BusDir representa el Bus de Direcciones este establece la dirección de memoria del dato que este en
ese momento en tránsito, por ejemplo la dirección de suma que en ese momento muestra PC es 08.
La señal DataEXIn corresponde al bus de datos que entran al procesador, en él se pueden ver los Opcode
que recoge de la memoria ROM, como por ejemplo: el Opcode de la suma es 01001000 que en hexadecimal
corresponde al número 48, el cual se puede observar en la simulación.
Mientras que la señal DataExOut no se visualiza nada porque no utiliza funciones de escritura ni de periféricos
como de memoria.

Figura 2. Simulación Segunda Parte

En la Figura 2. se observa que la suma sigue repitiéndose y también se puede identificar que el acumulador

3
ACC se incrementa de dos en dos. La señal de carry out C sigue en bajo y el contador de programa PC indica
la repetición del ciclo de suma. En el bus de direcciones se repiten las direcciones de la ROM 0x08, 0x09, 0x0B
y 0x0C, que corresponden a la suma y los saltos que mantienen la suma, 0x0C cotiene la dirreción donde esta
almacenado el comando de la suma.

Figura 3. Simulación Tercera Parte

En la figura 3. Ya se observa que en la última suma se tiene un carry out, es decir que la señal C esta en
alto. En este momento PC salta no hacia la suma, salta hacia la instrucción de Fin ubicada en la dirección 0D y
0E donde se quedara indefinidamente. El tiempo que duró para correr el codigo y llegar al desbordamiento es de
341017.891 ns

Figura 4. Simulación Cambio de Variables Primera Parte

La Figura 4. Corresponde a la misma simulación pero un cambio en los valores de las constantes, es decir un
cambio en las constantes que se suben a A y ACC. Se hicieron estos cambios para reducir el tiempo de ejecución
del programa. Como se puede observar en la figura los valoesr que se almacenan en A y ACC son respectivamente
0x35 y 0x96, por lo que solo se necesitan 2 iteraciones para llegar al deborde de la operación.

Figura 5. Simulación Cambio de Variables Segunda Parte

4
En la Figura 5. Se observa con más claridad que al llegar a la instrucción de Fin ubicada en la dirección 0D y
0E, estas direcciones se repiten en PC lo que quiere decir que este permanece así indefinidamente.

Figura 6. Fetch

En la Figura 6. se observa el tiempo de duración del ciclo de Fetch, el cual corresponde a 3985.789 ns,
este valor es importante tenerlo en cuneta puesto que es útil para caulcular retardos o tiempos de operación. Por
ejemplo en la figura 1, cuando se mueve el valor de una constante al acumulador, se puede observar que el registro
toma el valor dado incluso despues a que el pc incrementa, teniendo en cuenta que se incrementa el contador de
programas PC aproximadamente 2500 ns despues de iniciar el ciclo fetch, se puede deducir que el procedimiento
que se lleva a cabo para realizar esta operación es por lo menos mas grande que este tiempo..

3. Conclusiones
Al simular el programa de base que tiene el procesador se entendieron de una mejor forma cuáles son sus
componentes principales y sus respectivas funciones, ya que al simular se separaron las señales que se necesitaban
pudiendo analizar a este de una manera mas detallada, por ejemplo se pudó evidenciar el ciclo de fetch para subir
cada instrucción al procesador y se corroboró el procidimiento que realizan los refistros para llevar a cabo las
operaciones.
Se pudó verficar el funcionamiento de un sistema digital que implementa un controlador por microinstrucción,
diferente a los sistemas controlados por estados, aunque se pueden hacer ciertas analogias entre estos puesto
que las instrucciones se pueden entender como estados en si mismos pero que estan agrupados en conjuntos por
relaciones funcionales. Este sistema ha demostrado ser práctico para englobar conjuntos de instrucciones puesto
que simplifica su implementación y busqueda.
Uno de los aspectos a tener en cuenta es el tiempo que tarda el sistema en realizar sus operaciones, dado que
este es muy pequeño muchas veces se tiene la percepción de que los procesos ocurren de forma instantanea, pero
lo cierto es que este es un mecanismo con muchas partes interactuando por lo que es fundamental entender como
y cuando estas se comunican.
En el analisis de programas de la PDUA la prueba de escritorio es funcdamental para entender que podemos
esperar en las simulaciones, por ende es de gran importancia hacer un correcto analisis instrucción por instrucción
donde se evidencie los cambios en las varibles más importantes que para este caso son ACC y A.

Referencias
Referencia 1. El Procesador. https://www.euston96.com/procesador/

También podría gustarte