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 1x 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.