MAQUINA RUDIMENTARIA UN COMPUTADOR PEDAGÓGICO

Anuncio
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
Descargar