Arquitectura y Simulador del RSCPU

Transcripción

Arquitectura y Simulador del RSCPU
Arquitectura y Simulador
del RSCPU (Relatively Simple CPU)
Omar X. Avelar
ARQUITECTURA DE COMPUTADORAS (ESI 031B)
Instituto Tecnológico y de Estudios Superiores de Occidente (ITESO)
Departamento de Electrónica, Sistemas e Informática (DESI)
OBJETIVO
ACTIVIDAD
1. El alumno conocerá la organización de un procesador relativamente simple.
2. El alumno conocerá los componentes de un procesador relativamente simple.
3. El alumno aprenderá a utilizar el simulador de la arquitectura
de este procesador.
1. Abrir el simulador RSCPU.
2. Cargar el programa siguiente en la ventana de código del
RSCPU.
INTRODUCCIÓN
El RSCPU es un microprocesador relativamente simple que cuenta con 16 instrucciones básicas que incluyen operaciones de procesamiento a memoria, transferencia entre registros, saltos no
condicionales, saltos condicionales, aritméticas y lógicas.
La arquitectura del RSCPU contiene los siguientes elementos:
•
•
•
•
•
•
Registro
Registro
Registro
Registro
Registro
Registro
acumulador de 8 bits, AC .
de direccionamiento a memoria de 16 bits, AR .
contador de programa de 16 bits, PC .
de datos de 8 bits, DR .
de instrucciones de 8 bits, IR .
de almacenamiento temporal de 8 bits, TR .
El registro acumulador sirve para almacenar uno de los operandos y el resultado en operaciones aritméticas y lógicas.
El registro AR sirve para direccionar la memoria para obtener o
almacenar datos.
El registro PC sirve para apuntar a la instrucción del programa
que se ejecuta.
El registro DR sirve para almacenar datos que se obtienen de la
memoria o datos que se almacenarán en la memoria.
El registro IR contiene la instrucción que se ejecuta, incluye sus
código de operación y sus operandos.
INIT:
FIN:
x:
y:
z:
org 0
ldac x
mvac
ldac y
not
inac
add
stac z
jump FIN
org 15h
db 128
db FFh
db 0
3. Ensamblar el programa.
4. Observar el contenido de la memoria. Identificar cada una de
las instrucciones y sus operandos conforme a sus definiciones en
el capítulo 6 del libro de referencia.
5. Analizar la ejecución del programa ejemplo paso a paso. Observar y comprender las acciones que se ejecutan en cada paso.
6. Modificar los datos de los operandos “x ”, y utilizando los siguientes pares de datos (están en decimal) y escribe los resultados para cada ejecución de ellos: (1,1), (22,76), (88,43),
(127,128), (1,255) y repetir desde el paso 3.
7. Contestar las siguientes preguntas :
1. ¿Qué representa el punto que se mueve por el bus de datos?
2. ¿Por qué algunas de las etiquetas en el simulador gráfico se
ponen en color rojo y algunas permanecen en negro?
3. ¿Habría otra forma de cambiar los datos sin necesidad de tener que reensamblar el programa? ¿Cómo lo harías?
4. ¿Qué hace este programa?
5. Para qué sirve la instrucción “ JUMP FIN ”? Qué pasaría si en
lugar de “JUMP FIN ” esta instrucción fuera “JUMP INIT ”?
6. ¿Para qué sirven las directivas del ensamblador ORG y DB ?
7. ¿Qué pasa si la primera directiva ORG del programa es ORG 6
en lugar de org 0 ?
8. ¿A qué direcciones de memoria corresponden las etiquetas
INIT y FIN ?
9. ¿En qué localidades de memoria están almacenados los contenidos de las variables “x ”, “y ” y “z ”?
Tema: Arquitectura de Computadoras - Page 1 of 4
Guadalajara, Mexico // jue 17 de septiembre de 2009.
ITESO
Arquitectura y simulador del RSCPU
Instituto Tecnológico y de Estudios Superiores de Occidente (ITESO),
Periférico Sur Manuel Gómez Morín 8585, Tlaquepaque, Jalisco, México, C.P. 45090.
Departamento de Electrónica, Sistemas e Informática (DESI).
Por: Omar X. Avelar
DESARROLLO
Se comenzó cargando el programa en el simulador.
Como se puede notar, los registros marcados de color rojo son
los que están siendo editados o leídos al momento de visualizar,
mientras que los registros marcados en negro se muestran como
pasivos y sin intervención en el proceso activo.
Fig. 1: Cargando el programa en el simulador.
El cual tuvo éxito al ser ensamblado y no presentó ningún problema. Al correr la simulación (View System >> Run), se observaron en forma de animaciones lo que sucedía en el sistema
(Fig. 2).
En el momento de la captura de pantalla (Fig. 2), el AR y el PC se
acababan de incrementar a 0x02 para poder leer la siguiente
instrucción de la memoria una vez ejecutada la instrucción actual, a su vez el DR contenía la instrucción encontrada en 0x01
la cual también se encuentra en IR (fetch) por ser la instrucción
a ejecutar en ese preciso momento.
A continuación se encuentra el programa propiamente comentado para explicar cada linea.
ORG 0
LDAC x
MVAC
LDAC y
NOT
FIN:
STAC z
JUMP FIN
x:
y:
ORG 15h
DB 128
DB FFh
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
z:
DB 0
// Localidad de memoria “z” con 0x00.
INIT:
INAC
ADD
Comienza lo de abajo en 0x00.
Carga lo que hay en “x” en AC.
R = AC.
Carga lo que hay en “y” en AC.
AC = !(AC), Si el resultado es
0, entonces Z = 1, si no Z = 0.
Incrementa AC en 1 (AC = AC + 1)
Si se desborda, Z = 1 && AC = 0.
Suma AC con R (AC = AC + R)
Si AC + R = 0, entonces Z = 1.
Guarda AC a donde esta “y”.
Se queda aquí, cargando el PC a
donde se encuentra esta linea.
A partir de 0x15 va lo de abajo.
Localidad de memoria “x” con 0x80.
Localidad de memoria “y” con 0xFF.
Fig. 2: Sistema.
Tema: Arquitectura de Computadoras - Page 2 of 4
Guadalajara, Mexico // jue 17 de septiembre de 2009.
ITESO
Arquitectura y simulador del RSCPU
Instituto Tecnológico y de Estudios Superiores de Occidente (ITESO),
Periférico Sur Manuel Gómez Morín 8585, Tlaquepaque, Jalisco, México, C.P. 45090.
Departamento de Electrónica, Sistemas e Informática (DESI).
Ya una vez entendido el programa, podemos observar el mapa
de memoria (Fig. 3) del simulador al ensamblar el programa.
Podemos ver como a partir de la dirección 0 se encuentran en
Por: Omar X. Avelar
Una cosa bastante interesante es que todas las instrucciones
ocupan 2 Byte, y por lo tanto las instrucciones las cuales su código de operación consta de solo 1 Byte (como NOT, MVAC, etc.)
son rellenadas con ceros. La siguiente figura (Fig. 4) muestra un
ejemplo de ello.
Fig. 3: Mapa de memoria del simulador después del ensamblado.
lenguaje maquina codificada las instrucciones del programa, por
ejemplo observaremos en este caso la primera instrucción que el
programa indica como: ldac x .
Localidad 0
Localidad 1
→
→
0x01 = 00000001b
0x15 = La dirección de “x”.
Fig. 4: Marcada la codificación de una instrucción NOT.
Después se corrieron diferentes programas con diferentes datos
en “x” y “y” y se marcaron los diferentes valores de acuerdo a la
siguiente tabla2.
Lo cual da lugar a la siguiente instrucción de acuerdo al manual
de RSCPU1.
Nemónico
Opcode
Operación
LDAC
0000 0001
A = M[ ]
2
1
RSCPU-SYSTEM Simulator Help
x
y
z
128
255
0x81
1
1
0*
22
76
0xCA
88
43
0x2D
127
128
0xFF
255
1
0xFE
Los valores de la tabla se encuentran en decimal a menos de ser especificado
lo contrario.
Tema: Arquitectura de Computadoras - Page 3 of 4
Guadalajara, Mexico // jue 17 de septiembre de 2009.
ITESO
Arquitectura y simulador del RSCPU
Instituto Tecnológico y de Estudios Superiores de Occidente (ITESO),
Periférico Sur Manuel Gómez Morín 8585, Tlaquepaque, Jalisco, México, C.P. 45090.
Departamento de Electrónica, Sistemas e Informática (DESI).
Por: Omar X. Avelar
1. ¿Qué representa el punto que se mueve por el bus de datos?
Representa a la señal se ve pasando por los buses.
2. ¿Por qué algunas de las etiquetas en el simulador gráfico se
ponen en color rojo y algunas permanecen en negro? Se ponen
en rojo cuando se están modificando o leyendo los registros (hay
actividad). Mientras quedan marcados en negro los inactivos.
3. ¿Habría otra forma de cambiar los datos sin necesidad de tener que reensamblar el programa? Si ¿Cómo lo harías? Editando
la memoria del programa en tiempo real desde (View Memory
>> Edit Memory) editando la localidad 0x15 para “x ” 0x0F para
“y ” y reiniciando el CPU.
4. ¿Qué hace este programa?
z = int8 int8  y 1x
Se efectúa un not a “y ”, lo incrementa en 1 y lo suma con “x ”
guardando el valor en “z ”.
5. Para qué sirve la instrucción “jump FIN ”? Qué pasaría si en lugar de “jump FIN ” esta instrucción fuera “jump INIT ”? Para que
el procesador se quede ciclado haciendo nada, solo se encontrara modificando el PC para ir a donde mismo y seguirlo haciendo
indefinidamente.
En caso de que el salto fuera a INIT , el procesador se encontrara repitiendo el bloque de instrucciones completo un numero indefinido de veces.
6. ¿Para qué sirven las directivas del ensamblador ORG y DB ?
ORG → Define la referencia desde donde va a escribir en memo
ria las siguientes lineas.
DB →
Reserva/Define un byte con un dato.
7. ¿Qué pasa si la primera directiva ORG del programa es ORG 6
en lugar de ORG 0 ? Se desplaza la escritura del programa comenzando desde la dirección 0x06 y cambiando las direcciones
de los saltos sin afectar las direcciones de “x ”, “y ” y “z ”.
8. ¿A qué direcciones de memoria corresponden las etiquetas
INIT y FIN?
INIT:
FIN:
0x00
0x0D
0
13
9. ¿En qué localidades de memoria están almacenados los contenidos de las variables “x ”, “y ” y “z ”?
x:
0x0F
15
y:
z:
0x10
0x11
16
17
Tema: Arquitectura de Computadoras - Page 4 of 4
Guadalajara, Mexico // jue 17 de septiembre de 2009.

Documentos relacionados