MAQUINA RUDIMENTARIA UN COMPUTADOR PEDAGÓGICO Enrique Pastor Llorens Dept de Arquitectura de Computadores UPC Visión General de la Presentación Introducción al Computador Pedagógico ‘MAQUINA RUDIMENTARIA’ • Desarrollado por un equipo de profesores del Departamento de Arquitectura de Computadores entre los años 1995--98. • Se pretende diseñar de un computador simple para una asignatura de primer ciclo que incluya: • • • • • U P C Conceptos básicos sobre arquitectura Lenguaje máquina Lenguaje ensamblador y proceso de ensamblado Compuesto de circuitos digitales simples Análisis detallado de su funcionamiento La Máquina Rudimentaria 2 1 Indice • • • • • • • U P C Arquitectura de la Máquina Rudimentaria Lenguaje Máquina Unidad de Proceso Unidad de Control Lenguaje Ensamblador Entorno de Simulación Documentación La Máquina Rudimentaria 3 Indice • Arquitectura de la Máquina Rudimentaria U P C La Máquina Rudimentaria 4 2 Arquitectura de la MR Computador de tipo von Neuman • Unidad de Proceso • • • • Palabra de 16 bits: números en complemento a 2 ALU: suma, resta, desplazamientos y AND lógica Flags de condición: negativo (N) y cero (Z) Banco de registros con 8 elementos • Unidad de Control • Máquina de estados finitos • Memória • Capacidad: 256 palabras de 16 bits U P C 5 La Máquina Rudimentaria Arquitectura de la MR • Entrada / Salida no disponible • Buses de Interconexión • Direcciones: 8 bits • Datos: 16 bits • Una señal de control • Implementación • • • • U P C Registros Multiplexores, decodificadores Sumadores, restadores, incrementadores Lógica combinacional y secuencial La Máquina Rudimentaria 6 3 Indice • Arquitectura de la Máquina Rudimentaria • Lenguaje Máquina U P C 7 La Máquina Rudimentaria Lenguaje Máquina • • • • Lenguaje Máquina de tipo RISC Instrucciones de longitud fija Máxima ortogonalidad Tipos de instrucciones • Aritmético-lógicas • Acceso a memória • Saltos • Modos de direccionamiento restringidos • Registro e inmediato en aritméticas • Base más desplazamiento para load y store • Absoluto en los saltos U P C La Máquina Rudimentaria 8 4 Aritmético Lógicas • Seis instrucciones que permiten realizar: • Suma, resta, • Desplazamiento aritmético y AND-lógica • Operandos en el Banco de Registros • Números de 16 bits en complemento a 2 • Rango [-32768, +32767] • Inmediato: 5 bits en complemento a 2 • Rango [-16, 15] • Flags de condición negativo (N) y cero (Z) • Actualizados después de cada operación U P C 9 La Máquina Rudimentaria Aritmético Lógicas Modo Registro - Registro: SUMA RESTA DESPLAZAMIENTO AND LOGICA Rd := Rf1 + Rf2 Rd := Rf1 - Rf2 Rd := Rf1 >> 1 Rd := Rf1 AND Rf2 Modo Registro - Inmediato: SUMA RESTA U P C La Máquina Rudimentaria Rd := Rf1 + inmediato Rd := Rf1 - inmediato 10 5 Aritmético Lógicas CO 15 Rd 13 11 15 Rd U P C Rf1 101 00 RESTA 0 110 2 00 4 SUMA 0 2 4 Rf2 7 100 00 Rf2 0 2 4 7 10 00 Rf2 Instrucciones aritmeticas Modo registro - registro OP 2 4 7 Rf1 Rd 13 Rf2 Rf1 10 00 4 7 10 Rd 11 15 Rf1 Rd 13 Rf2 7 10 13 11 15 10 13 11 15 Rf1 DESPLAZAMIENTO 0 111 2 AND 0 11 La Máquina Rudimentaria Aritmético Lógicas CO 15 Rd 13 11 15 U P C 10 Rd 13 11 15 Rf1 7 Rf1 10 Rd 13 Inmediato 2 Inmediato 7 Rf1 10 La Máquina Rudimentaria 0 000 2 Inmediato 7 Instrucciones aritmeticas Modo registro - inmediato OP SUMA 0 001 2 RESTA 0 12 6 Acceso a memória • Dos instrucciones de acceso a memória: • LOAD: lectura de memória • STORE: escritura en memória • La dirección de memória se calcula como: • Una dirección base: número natural de 8 bits • Un desplazamiento: almacenado en un registro índice • El dato es leido o escrito en un registro del banco de registros • Instrucción LOAD modifica los flags de condición U P C 13 La Máquina Rudimentaria Acceso a Memória Modo Base más Desplazamiento: LOAD Rd := M[ dir_base + Ri ] STORE M[ dir_base + Ri ] := Rf CO Rd/Rf 15 13 00 15 U P C 10 Rd 13 01 15 Ri Ri Rf 13 7 10 La Máquina Rudimentaria 0 Dir_base 7 Ri 10 Instrucciones acceso a memoria Dir_base LOAD 0 Dir_base 7 STORE 0 14 7 Instrucciones de Salto • Siete instrucciones de salto • La condición es evaluada previamente por otra instrucción (p.e. aritmética) • La instrucción de salto analiza los flags de condición N y Z. • menor, mayor, igual, distinto • menor o igual, mayor o igual • incondicional • La dirección de la instrucción destino se especifica de forma absoluta (8 bits) U P C 15 La Máquina Rudimentaria Instrucciones de Salto CO COND 15 U P C 13 000 10 Dir_destino 7 Instrucciones de salto 0 10 000 000 Dir_destino Incondicional 10 001 000 Dir_destino Igual 10 010 000 Dir_destino Menor 10 011 000 Dir_destino Menor o igual 10 100 000 Dir_destino Distinto 10 101 000 Dir_destino Mayor o igual 10 110 000 Dir_destino Mayor 10 111 000 Dir_destino Halt La Máquina Rudimentaria 16 8 Indice • Arquitectura de la Máquina Rudimentaria • Lenguaje Máquina • Unidad de Proceso U P C 17 La Máquina Rudimentaria Unidad de Proceso Elementos de la UP: • • • • • • U P C Instrucción en ejecución Secuenciamiento implícito Banco de registros Unidad Aritmético-lógica Condición de salto Cálculo de direcciones La Máquina Rudimentaria 18 9 Ld_IR (UC) 8 M@ IR 16 Mout L/E (UC) U P C MEMORIA Instrucción en Ejecución L/E 19 La Máquina Rudimentaria Secuenciamiento Implícito U P C +1 La Máquina Rudimentaria 8 M@ MEMORIA 8 PC Ld_PC (UC) 20 10 Secuenciamiento Implícito 8 M@ 8 PC Ld_PC (UC) +1 8 PC/@ (UC) MEMORIA 8 IR U P C 21 La Máquina Rudimentaria Banco de Registros 3 SL 16 R0 16 SE 3 R1 16 R2 16 R3 16 R4 16 R5 16 R6 16 16 Dout R7 E Din U P C La Máquina Rudimentaria 22 11 Unidad Aritmético-Lógica A Sumador B Restador Desplazador AND C0 C1 C2 16 N U P C O Z 23 La Máquina Rudimentaria Unidad Aritmético-Lógica 5I 5I5L 5I 18 %$1&2 '( 5(*,67526 &5 I 5G (5G 6/ 6( 'RXW 5$ ( 'LQ $ 5= 51 % $/8 23(5$5 23 U P C La Máquina Rudimentaria 24 12 Unidad Aritmético-Lógica 5I 5I5L 5I 18 (5 G (;7 %$1&2 '( 5(*,67526 &5 I 5G 6/ 6( ,5 'RXW &2 5$ ( 'LQ 23 $ 5= 51 % $/8 23(5$5 23 U P C 25 La Máquina Rudimentaria Evaluación de la Condición Cond U P C Evaluación de la condición La Máquina Rudimentaria 3 COND 000 001 010 RZ 011 RN 100 COND (IR13-11) 101 110 111 Cond 1 Z N N+Z no Z no N no N+Z Salto BR BEQ BL BLE HALT BNE BGE BG 26 13 Cálculo de Direcciones 0LQ %$1&2 '( 5(*,67526 0# 3& 0(025,$ 5# 'RXW 3&# ,5 0RXW /( 27 La Máquina Rudimentaria 5I 18 0LQ 6/ %$1&2 '( 5(*,67526 81,'$' '( &21752/ &5 I 5G (5G 6( 'RXW ( 3&# 'LQ /GB5$ (;7 /GB,5 /GB3& ,5 /GB5# 0# 0(025,$ 5I 5# 5I5L 3& U P C /GB5= /GB51 3&# &5I 0RXW (5G 23(5$5 &2 5$ &2 23 $ &RQG (9$/8$&,21 '( /$ &21',&,21 5= 51 % $/8 23(5$5 23 &21' /( 14 Indice • Arquitectura de la Máquina Rudimentaria • Lenguaje Máquina • Unidad de Proceso • Unidad de Control U P C 29 La Máquina Rudimentaria Unidad de Control • Diseñada mediante el uso de máquinas de estados finitos, siguiendo el modelo de Moore. • Dos versiones de complejidad progresiva: • UC no optimizada, cada fase en un estado. • UC optimizada, cada estado implementa diversas fases. • Posterior síntesis como ejercicio práctico. U P C La Máquina Rudimentaria 30 15 Unidad de Control XXX XXX XXX /32 XXX 32 /62( $5,70(7,&$6 62( 11X /2$' (CO Cond) )(7&+ ) XXX 00X '(& $'5 $' 0XX '( 01X /2$' / 6725( 6725( 6 10X XXX (&6 XX0 XX1 (& U P C $'5 XXX %5$1&+ 6$/72 % $' 31 La Máquina Rudimentaria Unidad de Control XXX XXX $5,7 XXX $5,70(7,&$6 $ 11X /2$' (CO Cond) )(7&+ ) XXX 00X '(&2 ' 01X / 6725( 6 /2$' 6725( 101 XXX U P C La Máquina Rudimentaria %5$1&+ 6$/72 % 32 16 5I 5I 5I5L 18 5I &RQG 5I 5I5L 18 &RQG 5G &5I (5G /GB5$ /GB,5 /GB3& /GB5# /GB5= /GB51 3&# &5I (5G 23(5$5 &2 6/ &21' 'LQ 'RXW %$1&2 '( 5(*,67526 6( ( ( 6( 'LQ 'RXW %$1&2 '( 5(*,67526 6/ (9$/8$&,21 '( /$ &21',&,21 5G &5I (5G /GB5$ /GB,5 /GB3& /GB5# /GB5= /GB51 3&# &5I (5G 23(5$5 &2 (9$/8$&,21 '( /$ &21',&,21 &21' 5= 51 5= 51 5$ 5$ $ $ $/8 $/8 (;7 % (;7 % ,5 23 &2 23(5$5 23 ,5 23 &2 23(5$5 23 R@ 3& R@ 3& 0# 0LQ fetch 3&# 0RXW /( 0# 0LQ deco 3&# 0(025,$ /( 0RXW 0(025,$ 81,'$' '( &21752/ 81,'$' '( &21752/ 17 5I5L 5I 5I 18 5I &RQG 5I 5I5L 18 &RQG 5G &5 &5II (5 (5GG /GB5$ /GB,5 /GB3& /GB5# /GB5= /GB51 3&# &5I (5G 23(5$5 &2 6/ &21' 'LQ 'RXW %$1&2 '( 5(*,67526 6( ( ( 6( 'LQ 'RXW %$1&2 '( 5(*,67526 6/ (9$/8$&,21 '( /$ &21',&,21 &5 &5II 5G (5 (5GG /GB5$ /GB,5 /GB3& /GB5# /GB5= /GB51 3&# &5I (5G 23(5$5 &2 (9$/8$&,21 '( /$ &21',&,21 &21' 5= 51 5= 51 5$ 5$ $ $ $/8 $/8 (;7 % (;7 % ,5 23 &2 23(5$5 23 ,5 23 &2 23(5$5 23 R@ 3& R@ 3& 3&# 3&# 0# 0LQ arit 0# 0LQ load /( 0RXW 0(025,$ /( 0RXW 0(025,$ 81,'$' '( &21752/ 81,'$' '( &21752/ 18 5I 5I 5I5L 18 5I &RQG 5I 5I5L 18 &RQG 5G &5 &5II (5 (5GG /GB5$ /GB,5 /GB3& /GB5# /GB5= /GB51 3&# &5I (5G 23(5$5 &2 6/ &21' 'LQ 'RXW %$1&2 '( 5(*,67526 6( ( ( 6( 'LQ 'RXW %$1&2 '( 5(*,67526 6/ (9$/8$&,21 '( /$ &21',&,21 &5 &5II 5G (5 (5GG /GB5$ /GB,5 /GB3& /GB5# /GB5= /GB51 3&# &5I (5G 23(5$5 &2 (9$/8$&,21 '( /$ &21',&,21 &21' 5= 51 5= 51 5$ 5$ $ $ $/8 $/8 (;7 % (;7 % ,5 23 &2 23(5$5 23 ,5 23 &2 23(5$5 23 R@ 3& R@ 3& 0# 0LQ store 3&# 3&# 0RXW /( 0# 0LQ branch 0(025,$ /( 0RXW 0(025,$ 81,'$' '( &21752/ 81,'$' '( &21752/ 19 Indice • • • • Arquitectura de la Máquina Rudimentaria Lenguaje Máquina Unidad de Proceso Unidad de Control • Lenguaje Ensamblador U P C 39 La Máquina Rudimentaria Lenguaje Ensamblador • Instrucciones • Directivas • Reserva de memória • Asignación • Inicio y fin de programa • • • • U P C Etiquetas Macros Proceso de ensamblado Ejemplo La Máquina Rudimentaria 40 20 Instrucciones Aritméticas: Salto: ADDI Rf, #num, Rd SUBI Rf, #num, Rd ADD Rf1, Rf2, Rd SUB Rf1, Rf2, Rd ASR Rf1, Rd AND Rf1, Rf2, Rd Acceso a memória: BR dir_absoluta BEQ dir_absoluta BL dir_absoluta BLE dir_absoluta BNE dir_absoluta BGE dir_absoluta BG dir_absoluta HALT LOAD dir_base(Ri), Rd STORE dir_base(Ri), Rd U P C La Máquina Rudimentaria 41 Directivas Reserva de memória: .dw n1 {, n2, … , nN } .rw n Asignación: identificador = expresión Inicio y fin de programa: .begin identificador .end U P C La Máquina Rudimentaria 42 21 Etiquetas Definición: etiqueta: instrucción o directiva Utilización: Instrucciones de acceso a memória Instrucciones de salto Directiva de inicio Creación de expresiones U P C 43 La Máquina Rudimentaria Macros Creación de pseudo-instrucciones Declaración: .def nombre { argumento {, argumento }} { cuerpo de la macro } .enddef Argumentos: $dn: el operando es una dirección de memória $in: el operando es una constante inmediata $n: el operando es un registro U P C La Máquina Rudimentaria 44 22 Proceso de Ensamblado Ensamblado en dos fases: • Pre-ensamblado Expansión de macros y creación de la tabla de símbolos > pren programa macros programa.mr + macros.mr => programa.asm • Post-ensamblado Creación del código máquina ejecutable > posten programa programa.asm => programa.cod U P C 45 La Máquina Rudimentaria Ejemplo: Fichero de Macros .DEF CMP $1,$2 SUB $1,$2,R0 .ENDDEF .DEF CMP $1,$i2 SUBI $1,$i2,R0 .ENDDEF .DEF CLR $1 ADD R0, R0, $1 .ENDDEF .DEF MOV $1, $2 ADD $1,R0, $2 .ENDDEF .DEF MOV $i1,$2 ADDI R0,$i1,$2 .ENDDEF U P C La Máquina Rudimentaria .DEF MOV $d1, $2 LOAD $d1, $2 .ENDDEF .DEF MOV $d1,$d2,$3 LOAD $d1,$3 STORE $3,$d2 .ENDDEF .DEF INC $1 ADDI $1, #1, $1 .ENDDEF .DEF DEC $1 SUBI $1, #1, $1 .ENDDEF 46 23 Ejemplo: Programa Ensamblador .BEGIN ini ;Calculo del factorial de un numero ; N: .DW 4 FACT: .RW 1 INI: LOAD N(R0), R1 MOV R1, R3 CLR R4 ;producto de los elementos del factorial CMP R1, #1 M1: BLE FM1 MOV R1, R2 ;producto de numeros mediante sumas CMP R2, #1 M2: BLE FM2 ADD R4, R3, R4 U P C FM2: FM1: DEC R2 BR M2 MOV R4, R3 CLR R4 DEC R1 BR M1 STORE R3, FACT(R0) .END 47 La Máquina Rudimentaria Ejemplo: Pre-ensamblado .BEGIN ini n: .DW 4 fact: .RW 1 ini: load n(R0),R1 m2: ;cmp R2,#1 subi R2,#1,R0 ;end cmp R2,#1 ble fm2 add R4,R3,R4 ;mov R1,R3 add R1,R0,R3 ;dec R2 subi R2,#1,R2 ;end mov R1,R3 ;clr R4 ;end dec R2 add R0,R0,R4 ;end clr R4 m1: br m2 fm2: subi R1,#1,R0 ;end mov R4,R3 ;clr R4 ;end cmp R1,#1 add R0,R0,R4 ble fm1 ;end clr R4 ;mov R1,R2 add R1,R0,R2 ;end mov R1,R2 U P C ;mov R4,R3 add R4,R0,R3 ;cmp R1,#1 La Máquina Rudimentaria ……... 48 24 Indice • • • • • Arquitectura de la Máquina Rudimentaria Lenguaje Máquina Unidad de Proceso Unidad de Control Lenguaje Ensamblador • Entorno de Simulación U P C 49 La Máquina Rudimentaria Entorno de simulación Simulador de la Máquina Rudimentaria: • • • • Simulador gráfico en entorno Windows Lenguaje ensamblador Plegado y desplegado de las macros Unidad de proceso / Unidad de control Ejecución: • • • • U P C Ciclo a ciclo Instrucción a instrucción Inserción de break-points Generación de trazas mediante cronogramas La Máquina Rudimentaria 50 25 26 27 28 29 30 Documentación • “La Máquina Rudimentaria”. CPET, Diciembre 1995 • “Apuntes de la Máquina Rudimentaria”. CPET, Octubre 1996, Febrero 1997, Noviembre 1997 (2a Ed.). • “Problemas de la Máquina Rudimentaria”. CPET, Febrero 1997, Noviembre 1997 (2a Ed.). • “La Máquina Rudimentaria, un Procesador Pedagógico”. III Jornadas de Enseñanza Universitaria de Informática, Junio 1997. • “Fundamentos de Computadores”. R. Hermida, A del Corral, E. Pastor y F. Sánchez, Ed. Síntesis, Enero 1998. U P C La Máquina Rudimentaria 62 31