ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye,...

47
ESTRUCTURA DE COMPUTADORES Práctica de microprogramación Documentación del simulador P8080E Departamento de Arquitectura y Tecnología de Sistemas Informáticos Facultad de Informática - UPM Curso 2011/2012 18/11/2011

Transcript of ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye,...

Page 1: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

ESTRUCTURA DE COMPUTADORES

Práctica de microprogramación

Documentación del simulador P8080E

Departamento de Arquitectura y Tecnología deSistemas Informáticos

Facultad de Informática - UPM

Curso 2011/2012

18/11/2011

Page 2: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

INDICE

1 INTRODUCCIÓN. 1

2 SISTEMA MICROCOMPUTADOR. 2

3 PROTOCOLOS DE RELACIONES EXTERIORES. 3

4 ORGANIZACIÓN INTERNA. 5

FORMATO POR DEFECTO. 7

ALU: SELECCIÓN DE OPERANDOS. 8

ALU: OPERACIÓN Y FLAGS. 8

REGISTRO F (FLAGS) 10

BUS DE DATOS INTERNO (IDB). 11

BANCO DE REGISTROS. 12

FLAG N. 13

SECUENCIAMIENTO. 13

ACCESO AL EXTERIOR. 16

HALT Y CAMPO dalt. 17

5 FLAGS. 17

6 PIPELINE. 18

7 MICROPROGRAMACIÓN. 19

8 EL PERIFÉRICO. 24

9 LA PRÁCTICA. 25

9.1 MODOS DE EJECUCIÓN 26

9.2 PROCESO DE EXCEPCIONES 26

10 TRABAJO A REALIZAR 30

11 NORMAS DE ENTREGA DE LA PRÁCTICA 33

12 APÉNDICE 42

Page 3: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

P8080E: MICROPROCESADOR MICROPROGRAMABLE

1 INTRODUCCIÓN.

La práctica consiste, como su nombre indica, en microprogramar un microprocesador, y esperamosque nos ayude a distinguir entre los conceptos, radicalmente diferentes, de programar un microprocesa-dor y microprogramar un procesador. La coincidencia de términos lleva frecuentemente a hablar demicroprogramación de forma ambigua.

La elección del microprocesador 8080 de Intel es arbitraria. Se eligió por su simplicidad, por laabundancia de información y porque, de alguna forma, pese a estar ya anticuado, ha pasado a lahistoria de la informática. Conviene destacar, no obstante, que la práctica no pretende hacer un 8080, nien ningún modo repetir la labor del personal de diseño de Intel. El 8080 es una orientación. Aquí sedescribe un pseudo 8080 (escribiremos P8080E) que se inspira en aquél.

Las razones que nos han llevado a crear un pseudo 8080 son fundamentalmente de dos tipos:

1.- El microprocesador 8080 no se pensó para un diseño microprogramado y, por tanto, no seadapta naturalmente a nuestro objetivo. Su diseño fue hecho a base de puertas lógicas de formamás convencional.

2.- Es nuestro interés presentar al alumno un diseño, según las explicaciones que se dan en lasclases teóricas, prefiriendo sacrificar algún detalle real ante un concepto lógico.

Concretamente, P8080E difiere del 8080 en los siguientes puntos:

- No se respetan los diagramas de tiempo, variando ligeramente la correlación de señales.- No se respeta el número de ciclos de reloj (estados T) que lleva cada instrucción.- Se han olvidado completamente todas las señales relacionadas con el control de los buses,

tales como HOLD y HLDA.- Tampoco se considera el manejo de interrupciones, señales INT, INTE e INTA.- Señales como DBIN, SYNC, WAIT y WR se han considerado innecesarias.- El pin RESET queda enmascarado. P8080E ejecuta un RESET único al arrancar (power-

up) y nunca más.- Los pines de alimentación (GND, +5v, -5v y +12v) y las fases de reloj (φ1 y φ2) se dan por

sobreentendidas.- Se ha modificado la organización interna respecto de los diagramas que se incluyen en los

manuales estándar del 8080.- Se ha añadido un biestable de desbordamiento (overflow) a la ALU y un biestable N para

implementar dos niveles de ejecución: nivel de usuario y nivel privilegiado.- No se genera la información de STATUS típica de cada ciclo de máquina M del 8080.- P8080E genera directamente las señales MEMR, MEMW, IOR e IOW que, en el caso del

8080, exigen emplear un circuito tipo 8228.

Todas estas divergencias deseamos aprovecharlas para una arquitectura más educativa. Creemosque sólo le sorprenderán a quien esté acostumbrado a trabajar con el microprocesador 8080, constru-yendo circuitos con él.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 1 -

Page 4: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

Debe quedar claro que lo que sigue es la descripción del P8080E. En ningún momento pretendemoshacer un manual del 8080. En la Biblioteca de la Facultad pueden encontrarse numerosos textos sobremicroprocesadores que se extienden en la descripción del 8080 de Intel. A ellos nos remitimos para unmejor conocimiento de éste y para completar la información sobre P8080E.

2 SISTEMA MICROCOMPUTADOR.

El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768palabras de 8 bits, bytes) y un periférico.

P8080E es capaz de direccionar 64k palabras de 8 bits a través de su bus de direcciones (ADDR)de 16 bits. Los datos van y vienen de memoria por el bus de datos (DATA) de 8 bits. P8080E pideciclos de lectura en memoria (memory read) por medio de la señal MEMR, y ciclos de escritura pormedio de MEMW (memory write). La memoria puede responder inmediatamente o pedir un tiempo extraa través de la línea READY (lista). De las 64 k palabras direccionables, sólo se han simulado las 32kprimeras. El resto no existe. Escribir en una celda que no existe es como gritar en el desierto. Leer deuna celda que no existe es como leer sin libro. No se provoca error alguno, pero el resultado esimpredecible.

P8080E es capaz de relacionarse con 256 puertas (ports) de entrada y/o salida. En nuestro sistemasólo existe una de tales puertas que comunica con un periférico, es la puerta 0. El periférico es unconvertidor A/D que nos permite convertir una tensión externa Vent entre 0 y 10 voltios en un códigobinario 0 a 255. Se puede escribir con ayuda de la señal IOW (input output write) y se puede leer conIOR (input output read), pudiendo responder el periférico inmediatamente o pedir un plazo por medio deREADY. Como se ve, es simétrico de lo que teníamos en memoria.

HALT

1616

8

8

88

MEMR

MEMW

ADDR

DATA

IOR

IOW

Vent

READY

periférico

1

1

memoria32k x 8P

8080

Figura 1.- Sistema completo. Señales de interconexión.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 2 -

Page 5: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

Concretamente, en la puerta 0 podemos escribir 8 bits a través del bus de datos (DATA) y leer un bita través de la línea inferior de dicho bus. Los detalles internos del periférico se verán más adelante.

Para terminar, P8080E genera una señal HALT (parado) cuando está parado, o más precisamente,al ejecutar la instrucción HLT P8080E se queda en un bucle sin salida, situación que indica al exteriorpor medio de la señal HALT. 8080 sale de este bucle por medio de interrupciones. Como P8080Ecarece de este mecanismo, es imposible sacarlo del bucle. De hecho se para.

3 PROTOCOLOS DE RELACIONES EXTERIORES.

P8080E utiliza dos fases de reloj no solapadas φ1 y φ2, a semejanza de su objeto de imitación 8080.Respecto a estas dos fases se dan todos los diagramas de tiempo.

Comenzaremos por los ciclos de lectura de memoria, que se atienen al esquema de la figura 2.

φ1 y φ2 son las dos fases de reloj. Hablaremos de los estados T (semejantes a los del 8080)definidos por los flancos ascendentes de φ1.

La señal MEMR sale de P8080E hacia la memoria. El 8080 genera algo parecido a través de lainformación de STATUS; pero P8080E es más simple. MEMR se lee “memory read” y marca un ciclo dememoria para realizar una lectura. MEMR se activa y desactiva con los flancos ascendentes de φ2.

ADDR es el bus de direcciones, 16 bits, que carga la dirección de memoria cuyo contenido desea-mos leer. ADDR debe ir sincronizado con MEMR. Antes de activar MEMR nos es indiferente. La direc-ción debe permanecer estable durante el tiempo que dure MEMR. Tras T2 vuelve a sernos indiferente.

La memoria puede tener problemas personales de ella para localizar el dato. Si desea un desahogode tiempo, lo indica mediante la señal READY, usualmente a nivel TRUE (lista), que pasa a FALSE(espera). P8080E estudia esta señal en los flancos ascendentes de φ1, instantes que se han marcadocon pequeñas flechas en la figura 2.

O1

O2

MEMR

ADDR (16)

READY

DATA(8)

lect

dirección

dato

Tw TwT1 T2 T3

Figura 2.- Ciclo de lectura de memoria.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 3 -

Page 6: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

Si READY = FALSE, nos quedamos en estados de espera Tw. En cuanto READY = TRUE, conti-nuamos. Puede suceder que no haya ningún estado Tw. Basta para ello, que la memoria deje READY= TRUE. Puede suceder que haya 1, 2, 3, ... estados Tw. Depende de la rapidez de respuesta de lamemoria.

La fila marcada lect no tiene realidad física. Simplemente nos indica que en los puntos indicados, elcontenido del bus de datos DATA, entra en el P8080E hacia el destino deseado. Como se ve, durantelos ciclos Tw se carga un dato que no está garantizado. No importa, la carga en T2 escribe el datocorrecto sobre lo que se pueda haber cargado anteriormente.

Por último, DATA es el bus de datos, que debe contener el dato correcto, al menos el tiempoindicado en la figura 2. Es responsabilidad de la memoria cumplir este requisito. No olvidemos que lamemoria puede pedir tiempos de espera Tw a través de READY.

Los ciclos de escritura (fig. 3) son muy parecidos. Las únicas diferencias afectan (1) a la señalMEMW, que sustituye a la MEMR de antes, y que indica escritura, y (2) al bus de datos, DATA. Enefecto, DATA es ahora responsabilidad de P8080E, que es quien dice qué quiere escribir en la direc-ción de memoria indicada. El diagrama nos muestra el tiempo que P8080E se compromete a tenerestable el dato. Es responsabilidad de la memoria tomarlo a tiempo. No olvidemos que la memoriasiempre puede pedir tiempo extra a través de READY, forzando estados de espera Tw.

La entrada de datos es equivalente a la lectura (fig. 2), diferenciándose de aquella en que ahora seactiva IOR en lugar de MEMR y que la dirección es sólo de 8 bits, que ocupan los 8 bits menossignificativos del bus de direcciones ADDR.

Análogamente, la salida de datos se reconoce por la señal IOW, que sustituye a la MEMW caracte-rística de los ciclos de escritura (fig. 3). La dirección consta de 8 bits.

O1

O2

MEMW

ADDR (16)

READY

DATA(8)

dirección

dato

Tw Tw T 3T1 T2

Figura 3.- Ciclo de escritura en memoria.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 4 -

Page 7: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

4 ORGANIZACIÓN INTERNA.

P8080E, por dentro, se parece mucho a su primo 8080. La figura 4 es fotocopia del manual de Intel.

Figura 4.- Arquitectura y organización del Intel 8080

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 5 -

Page 8: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

La figura 5 muestra los bloques en que se subdivide P8080E. El paralelismo es considerable. Lasdiferencias se han introducido para que P8080E sea microprogramable, sencillo y didáctico. La figura 5también indica en qué otras figuras se descompone cada bloque. Creemos que una figura vale por milpalabras y con esta idea hemos organizado el índice de figuras de forma gráfica.

sele

cció

nde

oper

ando

s

FIG

. 7

FLA

GS

FIG

. 9

ALU

FIG

.8

gene

raci

ónde

seña

les

FIG

. 15

regi

stro

esta

dose

lecc

ión

deco

ndic

ión

FIG

.13

cont

rola

dor

dem

icro

prog

ram

aci

ón.

me

mo

riade

cont

rol

FIG

. 14

Reg

istr

osde

16bi

ts

FIG

. 12

mic

roin

stru

cció

n40

bits

FIG

.6

AD

DR

bus

dedi

recc

ione

s

bus

deda

tos

FIG

. 16

RE

AD

Y

MEMR

MEMW

IOR

IOW

HALT

+12

v

+5

v

- 5

v

GN

D

RE

SE

T

cond

IDB

=In

tern

alD

ata

Bus

FIG

. 10

FIG

. 11

16

87

8

DA

TA

Bus

de d

atos

bidi

recc

iona

l

8

8

88

O1

O2

Figura 5.- Arquitectura y organización del P8080E

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 6 -

Page 9: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

P8080E es microprogramable. Su memoria de control consta de 2048 micropalabras de 40 bits cadauna. Para direccionar la memoria de control, necesitamos direcciones de 11 bits. Las micropalabrascontienen microinstrucciones.

Cada microinstrucción controla lo que ocurre en todas y cada una de las partes de P8080E. Comoorden de presentación de la organización interna de P8080E hemos preferido seguir el de los camposde la microinstrucción. Los aspectos de sincronización, fases de reloj, se tratarán al final.

La figura 6 presenta el formato de las microinstrucciones. En ella aparecen los distintos campos quepasamos a estudiar. Por cada campo se cita su nombre y el número de bits que incluye. Algunoscampos están muy estrechamente relacionados entre sí, tanto que se comentan agrupados.

selA 3 bits fig.7

Nos permite seleccionar la entrada A1 de la ALU (figs. 7 y 8).

defecto X X X X X 0 X 0 X X 0 1 1 0 0 X X 0 0 0 1 1 1 0 0 X 0 1 0 0 0 0 0 1 0 0 0 X X 0

bit nº 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

selA

CY

_A

TM

P_0

invT

MP

selC

in

invC

in

opA

LU

ldD

I

selC

Y

mod

F

_ID

B

IDB

_

selrp

op16

H_L

ldA

DD

R

selN

dalt_

R

selc

ond

invc

ond

ssm

i

save

acte

xtm

em_I

O

R_W

HA

LT

dalt

Figura 6.- Formato de microinstrucción.

SelA A1

012345

AA/2A*2DAAACTTMP

6 DI7 -

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 7 -

Page 10: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

TMP ACT A DI

8 8 8 8dalt [1]..[8]

O2

IDB_ = 1IDB_ = 3 IDB_ = 2

O2 O2 O2

ldDI

DAAmux 2:1

1 0

FLAG [8] A[1]

mux 2:1

1 0

FLAG [8] A[8]

CY_A

mux 8:1

7 6 5 4 3 2 1 0

888

corr

888 8

8

FLAG [4]

FLAG [8]

TMP_0

invTMP

8

8

8 IDB Internal Data Bus

TMP1

(fig. 8)(fig. 8)

A1

3 selA

Figura 7.- Selección de operandos para la ALU

A1

3selCY

mux

8:1

"F"

"T"

FLAG[8]

0

1

2

3

4

5

6

7

A[1]

A[8]

Σ 8 bitsCout

C6

AcV

FLAG[8]selCininvCin

0 1 2 3

mux 4:1

8

8

8

1

1

1

S

Z

P

_IDB = 0

8

2

opALU

Cin

TMP1

Cy

8 IDB

8

8

8

8 8

8

Figura 8.- ALU: Unidad Aritmético-Lógica

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 8 -

Page 11: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

DAA es un circuito combinacional que, tras sumar de golpe dos números BCD de dos dígitos cadauno, nos dice si a alguno de ellos hay que aplicarle el factor de corrección 6. DAA es un circuitocombinacional con la siguiente tabla de verdad:

CY_A 1 bit fig. 7

Nos selecciona el bit que falta para completar un desplazamiento. Combinado con selA tenemos 4variantes para A1. Nos serán útiles para instrucciones de desplazamiento y rotación:

TMP_0 1 bit fig. 7invTMP 1 bit fig. 7

Estos dos campos nos seleccionan la entrada TMP1 del sumador (fig. 8). Entre ambos disponemosde:

selCin 1 bit fig. 8invCin 1 bit fig. 8

Estos dos campos deciden la entrada Cin al sumador de la fig. 8:

CY A[1..4] AC A[5..8] corr

001

001

001

000606

606666

606666

0..90..80..9

A..F9..FA..F

0..20..20..3

0..9A..F0..3

0..9A..F0..3

0..9A..F0..3

000

000

111

FLAG [8] A [8]SelA = 1CY_A = 1

desplazamientoa la derecha

A [8] A [8]SelA = 1CY_A = 0

rotacióna la derecha

A [1] FLAG [8]SelA = 2CY_A = 1

desplazamientoa la izquierda

A [1] A [1]SelA = 2CY_A = 0

rotacióna la izquierda

TMP_0 invTMP TMP1

0101

00000000 = cero11111111 = -1 (comp. a 2)TMP para sumarnot TMP para restar

0011

selCin invCin Cin

01CYnot CY

0101

0011

para ADDpara SUBpara ADCpara SBB

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 9 -

Page 12: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

opALU 2 bits fig. 8

Selecciona la operación que se realiza en la ALU:

ldDI 1 bit fig. 7

Carga los primeros 8 bits del campo dalt en el registro DI (Dato inmediato). Este bit forma parte delcampo dalt, por lo que el dato inmediato sólo estará en el registro DI hasta se realice algún salto.

selCY 3 bits fig. 8

Selecciona un nuevo candidato a ocupar la octava posición del registro FLAG. Véase la figura 9.

opALU ALU

0123

A1 + TMP1 + CinA1 and TMP1A1 or TMP1A1 xor TMP1

sumas y restas

selCY CY

puesta a 0puesta a 1acarreo de salida del sumadoridem negado, para restasbit más a la izquierda del acumulador Abit más a la derecha del acumulador Aantiguo CYantiguo CY negado

FTC7not C7A[1]A[8]FLAG[8]not FLAG[8]

01234567

mux 2:1

1 0

7 7

7

IDB[1, 2, 3, 4, 6, 7, 8]

mux 2:1

1 0

5 5

S, Z, V, Ac, P FLAG[1, 2, 3, 4, 6]

modF

5

IDB_ = 4

FLAGO2

8

_IDB = 1

mux

4:1

0

1

2

3

2

selN

"F"

"T"

FLAG[7]

Cy

S Z V Ac P N Cy1 2 3 4 5 6 7 8

FLAG

IDB

N

Figura 9.- La palabra FLAG

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 10 -

Page 13: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

modF 1 bit fig. 9

Controla si se modifican o no los FLAGS S, Z, V, AC y P. Muchas instrucciones no alteran estosFLAGS.

_IDB 2 bits fig. 10 y 11IDB_ 3 bits fig. 10 y 11

Estos dos campos controlan el uso del bus de datos interno, IDB, para transmitir datos de una partea otra (fig. 10 ). _IDB controla quién sale a IDB, mientras que IDB_ especifica el destino. La figura 10contiene los decodificadores de estos campos.

La figura 11 explica la función de cada caso, junto con las figuras donde tiene efecto cada salida deldecodificador.

Algunos ejemplos de transferencias posibles pueden ser:

ALU→A _IDB = 0 IDB_ = 1DATA→ IR _IDB = 3 IDB_ = 7FLAG→ DATA _IDB = 1 IDB_ = 6etc.

selrp 3 bits fig. 12op16 2 bits fig. 12H_L 1 bit fig. 12IdADDR 1 bit fig. 12

0

1

2

3

dem

ux1:

4

_IDB = 0

_IDB = 1

_IDB = 2

_IDB = 3

2

"1"

_IDB

0

1

2

3

4

5

6

7

dem

ux1:

8

IDB_ = 0

IDB_ = 1

IDB_ = 2

IDB_ = 3

IDB_ = 4

IDB_ = 5

IDB_ = 7

IDB_ = 6

3

"1"

IDB_

Figura 10.- Decodificadores que afectan al IDB.

_IDB fuente

0123

ALUFLAGREGSDATA

IDB_

01234567

a ninguna parteAACTTMPFLAGREGSDATAIR

destino

Figura 11.- Codificación de las entradas y salidas a/de IDB.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 11 -

Page 14: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

Estos cuatro campos controlan la parte de 16 bits del P8080E.

selrp - selecciona un par de registros, 16 bits.

op16 - decide la realimentación de los registros.

H_L - selecciona entre los 8 bits superiores o los 8 inferiores.

IdADDR - carga 16 bits en el registro de direcciones ADDR.

El par seleccionado (ver tabla de clave en la propia figura 12) sale a IDB16.

IDB sólo cubre 8 bits. De los 16 de IDB16, el campo H_L selecciona los 8 bits superiores (H_L = 1)o los 8 bits inferiores (H_L = 0). Sólo sale a IDB si el campo _IDB = 2 (REGS).

IDB16 se carga en el registro ADDR si y sólo si IdADDR = 1.

mux 2:1

1 0

IDB 16 (L)

mux 2:1

1 0

IDB 16 (H)

H_L

mux

4:1

0

1

2

3

2op16

_IDB = 2

8

mux 2:1

0 1IDB_ = 5

mux 2:1

1 0

- 1

+ 1

16

AD

DR

O2ldADDR

16

8

88

IDB16

IDB16 (H) IDB16 (L)

H_L

16

16

16

16

88

8

16

bus de direcciones

8

IDB

8 IDB

IDB161

selrp

RE

GS

01234567

WZBCDEHLSPPCUV--

O2

3selrp

W ZB CD EH L

SPPC

U V

Figura 12.- Registros de 16 bits.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 12 -

Page 15: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

A efectos de entrada, carga de registros, tenemos las siguientes posibilidades:

1.- Cargar desde IDB. Esto es así si IDB_ = 5. Se cargan los 8 bits superiores (H_L = 1) o los 8inferiores (H_L = 0). Los registros de la figura 12 siempre se gestionan por pares, es decir, comoregistros de 16 bits. Si queremos modificar sólo los 8 bits desde el bus IDB, habrá que reciclar losotros 8 bits desde IDB16. Más concretamente, si tenemos en BC un contenido bc y queremos alterarB escribiendo b’ en él, tendremos que combinar b’ con c para obtener b’c, que se carga en BC. Asíqueda modificado B y repite C. De estos cambalaches se encargan los dos multiplexores de la figura12, parte superior.

2.- Cargar desde IDB16, cuando IDB_≠ 5. IDB16 lo controla el campo op16 que permite elegirentre 4 opciones:

selN 2 bits fig. 9

Este campo permite definir el nuevo valor del flag N (Nivel de ejecución). Hay cuatro posibilidades:

dalt_R 1 bit fig. 14

Este campo indica si los saltos a la dirección especificada por dalt se realizan de forma absoluta(dalt_R = 0) o relativa al contador de microprograma (dalt_R = 1).

selcond 3 bits fig. 13

Nos permite seleccionar entre 8 condiciones para controlar la dirección de la siguiente microinstruc-ción a ejecutar.

op16 IDB16

- decrp- incrp

se conserva el contenido de rpse decrementa en 1se incrementa en 1se toma el contenido del registro ADDR

0123

selN

Puesta a 0Puesta a 1Antiguo NAntiguo N negado

FTFlag [7]not Flag[7]

0123

selcond

incondicionalsigno (S)cero (Z)paridad (P)acarreo (CY)señal exterioroverflow (V)nivel de ejecución (N)

TRUEFLAG[1]FLAG[2]FLAG[6]FLAG[8]READYFLAG[3]FLAG[7]

01234567

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 13 -

Page 16: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

invcond 1 bit fig. 13

Niega la condición seleccionada por selcond.

ssmi 1 bit fig. 14

Selección de la siguiente microinstrucción. Junto con la condición cond, determinada por selcond einvcond, tenemos las siguientes posibilidades:

mPC es el contador de microprograma. En cada momento, apunta a la microinstrucción que estamosejecutando. Lo más usual es ejecutar microinstrucciones consecutivas. Para ello utilizaremos la fila 1 dela tabla anterior.

El registro μP son en realidad tres registros organizados en forma de pila. Constituyen la micropiladel P8080E y permiten realizar tres niveles de microsubrutinas. Cuando se selecciona esta opción serealiza implícitamente una operación POP de la micropila. Se carga con una operación PUSH cuando loordena el campo save que veremos a continuación.

dalt son 11 bits de la microinstrucción que nos permiten ir explícitamente a una determinada direc-ción. Podemos saltar a cualquier sitio de la memoria de control. El campo dalt especifica una direcciónabsoluta o un desplazamiento en complemento a 2 con respecto al contador de microprograma depen-diendo del el campo dalt_R. Si save = 1, dalt especifica la dirección de una microsubrutina.

IR*8 significa multiplicar el contenido de este registro por 8, es decir, añadir 3 ceros a la derecha. Deesta forma seleccionamos la microrrutina que implementa cada instrucción. Esta posibilidad de elecciónes básica para que P8080E interprete el juego de instrucciones del 8080.

Eventualmente, tras la fase de FETCH, tendremos en el registro de instrucción IR un código deoperación. Sea el 21H, que corresponde a la instrucción LXI H, d16. ¿Dónde están las microinstruccio-nes para interpretar esta instrucción? Sencillo: a partir de la dirección 21H•8 = 108H. P8080E debesaltar a la dirección 108H. Este salto se hace utilizando la última fila de la tabla anterior.

ES

TAD

O

CIERTO

"S" = FLAG[1]

"Z" = FLAG[2]

"P" = FLAG[6]

"Cy" = FLAG[8]

READY

"V" = FLAG[3]

"N" = FLAG[7]

[1]

[8]

[7]

[6]

[5]

[4]

[3]

[2]

0

7

6

5

4

3

2

1

mux

8:1

O13

selcond

invcond

cond

Figura 13.- Registro de estado. Selección de condición.

cond ssmi microdirección

la siguiente, mPC+1la reservada en el registro P(RET)μla indicada en el campo dalt (bits 1 .. 11)IR * 8

0101

0011

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 14 -

Page 17: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

save 1 bit fig. 14

Si se selecciona el campo dalt como la dirección de la siguiente microinstrucción a ejecutar(cond = 1 y ssmi = 0) y save = 1, se salva en la micropila la dirección de la microinstrucción siguientea la que estamos ejecutando, es decir, mPC + 1. De esta forma luego podremos retornar a ella saltandoa μP. Las direcciones almacenadas avanzan un lugar en la micropila, es decir, se realiza una operaciónPUSH. La dirección almacenada en el último registro de la micropila se pierde. Dado que μP tiene unaprofundidad de tres registros, sólo se podrán anidar tres saltos a microsubrutina.

cond

mux 2:1

1 0

3

IRO2

IDB_ = 7

8

8

Σ 11 bits

11

11

mux 2:1

0 1

11

11

O2

save

cond

ssmiO1

cond

ssmiμP

push pop

11

+ 1

mPCO1

11

11

11

3 2 1 0

mux 4:1

"0"

11

dalt

1111

40

11

mdir

memoria PROM

2048 x 40

microinstrucciónO1

"001"

ssmi

RESET

8 IDB

cond

ssm

i

0 00 1

1 0

1 1

mdirmPC + 1μP (pop)

dalt (+save -> push)

IR * 8

dalt_R

Figura 14.- Control del microprograma. Memoria de control.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 15 -

Page 18: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

actext 1 bit fig. 15mem_io 1 bit fig. 15R_W 1 bit fig. 15

Estos campos controlan la generación de la señales para acceder a memoria y a los periféricos.

actext mem_io R_W se activa:

MEMRMEMWIORIOWninguna

11110

1100x

1010x

J

K

Q

D Q

J

K

Q

J

K

Q

J

K

Q

R_W

mem_ioactext

MEMR

MEMW

IOR

IOW

HALT(fig. 1)

RESET

ESTADO [6] O2O2

halt

Figura 15.- Generación de señales externas.

DATAIDB_ = 6

O2

8

8

MEMW

IOW

8 bus de datos DATA

_IDB = 3

8

8

8 IDB

(fig. 14)

Figura 16.- Bus de datos.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 16 -

Page 19: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

HALT 1 bit fig. 1

Si TRUE, P8080E se para.

dalt 11 bits fig. 14

Campo solapado con otros que nos da una dirección alternativa de salto para seleccionar la siguien-te dirección. Además de esto, sus 8 primeros bits pueden ser cargados en el registro DI para realizaroperaciones en la ALU sobre datos inmediatos. La carga de este registro se gobierna con el campoldDI. Obsérvese que el campo dalt está solapado con los campos que controlan la ALU y que estastres interpretaciones de los 11 primeros bits del registro de control son mutuamente excluyentes.

5 FLAGS.

Quizás merecen atención especial los FLAGS, conjunto de 7 bits de información auxiliar de P8080Ea disposición del programador. Esta información se denomina a veces de estado, término que evitare-mos para no confundirlo con el estado de la máquina. Hay unos FLAGS que aparecen en la figura 9 yun registro de estado que aparece en la figura 13. En esta sección tratamos exclusivamente de losprimeros.

Tras una operación en la ALU, P8080E se reserva alguna información sobre aquella. Concretamen-te, evalúa seis valores lógicos que son (fig. 8):

S TRUE si el resultado es negativo.S: = bit de “signo”.

Z TRUE si el resultado es cero.Z:= todos los bits son FALSE.

V TRUE si se produce overflow en complemento a 2,V:= C6 XOR C7

AC TRUE si hubo acarreo de la posición 3 en el sumador de la ALU. AC:= C3.P TRUE si el número de 1’s es par.CY varias posibilidades, ver fig. 8.

Por otro lado hay otro biestable de estado que no está asociado a la ALU y que sirve para almace-nar el nivel o modo de ejecución del procesador:

N varias posibilidades, ver fig. 9.

P8080E guarda estos valores en el registro FLAG. La figura 9 muestra a qué valor se dedica cadauna de las 8 posiciones de este registro. Un bit se desperdicia; además, puede observarse que no estáconectado a ningún elemento, por lo que el registro FLAG no puede utilizarse para almacenar valorestemporalmente. Este registro puede cargarse directamente desde IDB, si IDB_= 4, o puede cargarsecon los valores evaluados en la figura 8 . En este segundo caso van por separado S, Z, V, AC y P, deuna parte, y N y CY de otra.

S, Z, V, AC y P se evalúan en la figura 8 siempre de la misma forma. Si modF entonces seactualizan en FLAG. Si no, se repite el valor anterior, esto es, las posiciones de FLAG a ellos dedicadasno se modifican.

CY se selecciona con selCY (fig. 8). Si no queremos modificarlo, se repite su valor con selCY = 6.

N se selecciona con selN (fig. 9). Si no queremos modificarlo, se repite su valor con selN = 3.

El contenido del registro FLAG puede afectar diversas zonas de P8080E, a saber:

- sale a IDB si _IDB = 1 fig. 9- desplazamientos si CY_A = 1 fig. 7- DAA si selA = 3 fig. 7

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 17 -

Page 20: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

- sumador si selCin = 1 fig. 8- reciclaje de S, Z, V, AC y P si modF = 0 fig. 9- reciclaje de CY si selCy = 6, 7 fig. 8- reciclaje de N si selN = 2, 3 fig. 9- estado de la máquina si selcond = 1, 2, 3, 4,

6, 7 fig. 13

6 PIPELINE.

P8080E está organizado en forma de pipeline con dos segmentos que se detallan en la figura 17. Elsegmento I se encarga de la selección de la siguiente microinstrucción, mientras que el segmento IIgestiona las operaciones sobre datos y registros.

FLAG exterior

registro de ESTADO

seleccion de condición

control demicroprograma

memoria de control

registro de microinstrucción

registrode estado

segm

ento

Ise

gmen

toII

FLAG ALU IDB 16 bits

flagsantiguos

nuevosflags

nuevosregistros

nuevosregistros

bus ADDR

selecciónde operandos.

operación

paso porIDB

selecciónpar de

registros

operaciónsobre IDB16

Ø1

Ø1

Ø1

Ø2

Figura 17.- Organización del pipeline.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 18 -

Page 21: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

El reloj φ1 controla ambos segmentos que se sincronizan a través del registro de estado (fig. 13) ydel registro de microinstrucción (fig. 14).

La sección I arranca en el registro de estado, pasa por la lógica de condiciones, el controlador demicroprograma, que decide cuál será la siguiente microinstrucción, y la memoria de control, que nos lada. Termina depositando la próxima microinstrucción a las puertas del registro de microinstrucción.

En este último arranca la sección II, que distribuye microinstrucciones para la sección I, para la ALU,los registros, los buses, etc. En particular genera los FLAGS que pueden controlar la actividad de lasección I en el siguiente microciclo.

Es un tipo de segmentación (pipeline) muy frecuente. Se intenta que dos procesos lentos, la búsque-da de microinstrucciones en memoria, y la gestión de los datos, ocurran en paralelo, acelerando lamáquina. El problema o característica de este tipo de organización reside en que un salto condicionalde microprograma se realiza sobre el estado de la máquina al final de la microinstrucción anterior, nosobre el estado final del ciclo actual. Este aspecto debe cuidarse al escribir los microprogramas.

μdir {i+1} = función (μinst {i}, ESTADO {i-1}).

La figura 17 nos detalla la sincronización de las varias actividades de P8080E. Nótese que el seg-mento II se parte en dos subfases, la que arranca con el flanco ascendente de φ1 y la que arranca conel flanco ascendente de φ2.

El registro de estado, fig. 13, cumple una función auxiliar, cual es sincronizar la señal asíncronaREADY, procedente de memoria o de periféricos.

7 MICROPROGRAMACIÓN.

P8080E arranca con un RESET, fig. 14, que le lleva a ejecutar la microinstrucción 1. Aquí debemicroprogramarse el conjunto de operaciones que constituye el arranque del procesador, tal como estádescrito en el apartado 9.2. Entre otras, debe preverse la inicialización del PC, contador de programa,con una dirección de memoria. La primera instrucción que se ejecuta es pues la que hay en esaposición de memoria principal.

Se pasa a la fase de búsqueda o FETCH. Para ello se lee de memoria el contenido de la posiciónindicada por PC. Se hace un ciclo de lectura en memoria. El dato, que es un código de operación, setrae a IR, el registro de instrucción. Este se utilizará para saltar a la microrrutina correspondiente paraejecutar la instrucción. Al final de ésta, regresamos a hacer el FETCH de la siguiente instrucción, etc.

La instrucción HALT es un poco especial. Su interpretación habitual es quedarse en un bucle portiempo indefinido, sin saltar a FETCH. Para P8080E, HALT implica pararse definitivamente.

Es misión del microprogramador, el alumno, prever microinstrucciones para la fase de RESET, deFETCH y cada una de las instrucciones del 8080.

La microprogramación de P8080E es laboriosa, pero bastante simple. En esta sección presentamosun posible lenguaje microensamblador para microprogramar P8080E. Este lenguaje no está implemen-tado, por lo que el alumno tendrá que traducir personalmente a los bits correspondientes de la micropa-labra. De todas formas creemos interesante distinguir dos fases:(1) escribir el microprograma en ellenguaje fuente y (2) microensamblarlo a mano. Otra opción sería codificar a base de ceros y unosdirectamente sobre una hoja de codificación.

Cada microinstrucción es una serie de campos separados por comas, terminando en punto y coma.Podemos anteponer una etiqueta numérica que fuerza la dirección donde se carga la micropalabra en lamemoria de control, la dirección real.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 19 -

Page 22: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

La figura 18 presenta un ejemplo de microprograma (no relacionado con la práctica actual).

La primera línea es un comentario. Todas las líneas que comienzan por “.” son líneas de comentario.

. RESET

. Carga el valor 0000H en el contador de programa. Primero el byte bajo y después el alto.

. Selecciona el nivel de ejecución 1 para arrancar en modo supervisor.1: TMP_0 = 0, opALU = AND, ALU -> REGS, rp = PC(L), selN = 1;

TMP_0 = 0, opALU = AND, ALU -> REGS, rp = PC(H);

. FETCH

. Lee el contenido de la dirección de memoria apuntada por el PC y lo guarda en el registro

. de instrucción (IR).3: rp = PC, incrp, ldADDR, MEMR;

DATA -> IR, jmp_r $ if not READY;. Salta a la microrrutina correspondiente al código de operación almacenado en el registro IR.

jmp inst;

. LXI H, d16 ... 21H

. Lee el operando de 16 bits y lo almacena en el registro HL. Primero la parte baja.108: rp = PC, incrp, ldADDR, MEMR;

DATA -> REGS, rp = HL(L), jmp $ if not READY;. A continuación la parte alta:

rp = PC, incrp, ldADDR, MEMR;DATA -> REGS, rp = HL(H), jmp $ if not READY;

. Salta a la rutina de fetchjmp 003H;

. MOV A, M .... 7EH

. Lee el contenido de la dirección de memoria apuntada por el registro HL y lo guarda en el

. Acumulador.3F0: rp = HL, ldADDR, MEMR;

DATA -> A, jmp $ if not READY;. Salta a la rutina de fetch

jmp 003H;

. INR A .... 3CH

. Realiza la operación A <- A + 00H + 1 modificando los flags.1E0: selA = A, TMP_0 = 0, selCin = 0, invCin, opALU = ADD, modF, selCy = Cout, ALU -> A;. Salta a la rutina de fetch.

jmp 003H;

. HALT ... 76H

3B0: HALT, jmp $;

Figura 18.- Ejemplo de microprograma.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 20 -

Page 23: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

Comenzamos en la posición 001 de la memoria de control que llamaremos RESET. Es aquí pordonde comienza a ejecutar P8080E, ya que RESET se activa al arrancar (véase la figura 14) y nos leela micropalabra de la dirección 1.

Esta primera microinstrucción nos dice que:

1.- El campo TMP_0 vale 0, fig. 7.

2.- La ALU realiza una operación AND, es decir, opALU = 1, ver fig. 8.

3.- De la ALU pasamos a los registros. Esto se hace a través de IDB. Para ello hacemos _IDB = 0e IDB_= 5, ver fig. 11.

4.- Se selecciona el par de registros PC, selrp = 5. De los 16 bits de PC, la parte baja, H_L = 0,ver figura 12.

5.- Se selecciona el nivel de ejecución N, selN = 1, véase la figura 9.

Los demás campos toman los valores por defecto que se indica en la figura 6.

Total, que hemos seleccionado un 00 para TMP1 y hemos hecho un AND con otra cosa cualquiera.Con este resultado, que vale 00, salimos a IDB, para terminar en el registro PC, parte inferior (fig. 12)Además forzamos un 1 en el flag N para arrancar en modo supervisor.

La siguiente microinstrucción hace lo mismo cargando 00 en los 8 bits superiores de PC.

Con esto termina la labor de RESET, que ha cargado ceros en los 16 bits de PC y ha seleccionadoejecución en modo supervisor. Esto es, pone el contador de programa a cero. Por ello la primerainstrucción que se ejecutará será la residente en la posición 0000 de memoria principal.

La tercera microinstrucción es la primera de una serie dedicada a localizar en memoria principal elcódigo de operación de la instrucción que hay que ejecutar. Se conoce por el nombre propio de FETCH(traída). Hace lo siguiente:

(1) selrp = 5, fig. 12(2) OP16 = 2, fig. 12(3) IdADDR = 1, fig. 12(4) actext = 1, mem_io = 1, R_W = 1; fig. 15

Es decir, que sacamos el registro PC al bus de direcciones, al paso que lo incrementamos y loguardaremos incrementado. Además arrancamos un ciclo de lectura en memoria principal.

La microinstrucción 4 nos dice que:

(1) _IDB = 3, IDB_ = 7, fig. 11(2) selcond = 5, invcond = 1, ssmi = 0, dalt = 000, dalt_R = 1; fig. 14

Es decir se carga el dato que esta en bus externo (DATA) en el registro de instrucción (IR) ycomprobamos si la memoria ha terminado con la lectura del dato (READY = 1), en cuyo caso pasamosa ejecutar la microinstrucción siguiente. Si no ha terminado (READY = 0), el dato que hemos leído noes correcto (es basura), por lo que debemos repetir la operación y, por tanto, saltamos a la mismamicroinstrucción. El salto lo hacemos relativo al contador de microprograma (dalt_R = 1) con desplaza-miento cero (dalt = 000).

La microinstrucción 5 dice que:

(1) selcond = 0, invcond = 0, ssmi = 1; fig. 14

Saltando incondicionalmente a IR•8.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 21 -

Page 24: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

Se han añadido varias microinstrucciones más, a modo de ejemplo. Concretamente las microrrutinasnecesarias para interpretar las siguientes instrucciones del 8080:

LXI H,d16 código: 21H más 2 bytes para el datoMOV A,M código: 7EHINR A código: 3CHHLT código: 76H

Al no existir un traductor automático o microensamblador, no insistiremos en la definición sintácticadel lenguaje. El alumno es muy libre de utilizar sus propios convenios para los demás campos. Simple-mente le agradeceremos que sean claros y útiles.

El usuario deberá microensamblar a mano las microinstrucciones que desee que ejecute P8080E.Para ello se utiliza una plantilla de codificación como la mostrada en la figura 6. Esta plantilla incluye unvalor por defecto para cada uno de los campos. La mecánica de traducción es la siguiente:

para cada campo de la microinstrucción:si se especifica su valor en el microprograma

entonces llenarlo con el valor especificadosi no, llenarlo con el valor por defecto.

Por ejemplo, la primera microinstrucción de la figura 18 nos da la siguiente información:

dirección = 001H especificadaselA = xxx por defecto da igualCY_A = x por defecto da igualTMP_0 = 0 especificadainvTMP = 0 especificada ceroselCin = x por defectoinvCin = 0 por defecto da igualopALU = 01 especificada ANDldDI = 0 por defecto no se carga DIselCY = 110 por defecto no se modifica FLAG[8]modF = 0 por defecto no se modifica FLAG[1, 2, 3, 4, 6]_IDB = 00 especificada ALU →IDB_ = 101 especificada → REGSselrp = 101 especificada PCop16 = 00 por defecto da igualH_L = 0 especificada parte baja, LIdADDR = 0 por defecto no se carga el bus ADDRselN = 01 especificada unodalt_R = 0 por defectoselcond = 000 por defecto CIERTOinvcond = 1 por defecto FALSOssmi = 0 por defecto siguientesave = 0 por defecto no se carga μPactext = 0 por defecto no se activa nadamem_io = x por defectoR _W = x por defectoHALT = 0 por defecto P8080E activo

La figura 19 muestra el microprograma fuente de la figura 18 y las micropalabras resultantes delproceso de microensamblado manual.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 22 -

Page 25: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

. RESET

. Carga el valor 0000H en el contador de programa. Primero el byte bajo y después el alto.

. Selecciona el nivel de ejecución 1 para arrancar en modo supervisor.

. 1: TMP_0 = 0, opALU = AND, ALU -> REGS, rp = PC(L), selN=1;001 XXXX0 0X001 01100 00101 10100 00010 00010 00XX0. TMP_0 = 0, opALU = AND, ALU -> REGS, rp = PC(H);002 XXXX0 0X001 01100 00101 10100 10100 00010 00XX0... FETCH. Lee el contenido de la dirección de memoria apuntada por el PC y lo guarda en el registro de instrucción (IR).. 3: rp = PC, incrp, ldADDR, MEMR;003 XXXXX 0X0XX 01100 XX000 10110 X1100 00010 01110. DATA -> IR, jmp_r $ if not READY;004 00000 00000 01100 11111 11100 X0101 10110 00XX0. Salta a la microrrutina correspondiente al código de operación almacenado en el registro IR.. jmp inst;005 XXXXX 0X0XX 01100 XX000 11100 X0100 00001 00XX0... LXI H, d16 ... 21H. Lee el operando de 16 bits y lo almacena en el registro HL. Primero la parte baja.. 108: rp = PC, incrp, ldADDR, MEMR;108 XXXXX 0X0XX 01100 XX000 10110 X1100 00010 01110. DATA -> REGS, rp = HL(L), jmp $ if not READY;109 00100 00100 11100 11101 01100 00100 10110 00XX0. A continuación la parte alta:. rp = PC, incrp, ldADDR, MEMR;10A XXXXX 0X0XX 01100 XX000 10110 X1100 00010 01110. DATA -> REGS, rp = HL(H), jmp $ if not READY;10B 00100 00101 11100 11101 01100 10100 10110 00XX0. Salta a la rutina de fetch. jmp 003H;10C 00000 00001 11100 XX000 11100 X0100 00000 00XX0... MOV A, M .... 7EH. Lee el contenido de la dirección de memoria apuntada por el registro HL y lo guarda en el Acumulador.. 3F0: rp = HL, ldADDR, MEMR;3F0 XXXXX 0X0XX 01100 XX000 01100 X1100 00010 01110. DATA -> A, jmp $ if not READY;3F1 01111 11000 11100 11001 11100 X0100 10110 00XX0. Salta a la rutina de fetch. jmp 003H;3F2 00000 00001 11100 XX000 11100 X0100 00000 00XX0... INR A .... 3CH. Realiza la operación A <- A + 00H + 1 modificando los flags.. 1E0: selA = A, TMP_0 = 0, selCin = 0, invCin, opALU = ADD, modF, selCy = Cout, ALU -> A;1E0 000X0 00100 00101 00001 11100 X0100 00010 00XX0. Salta a la rutina de fetch.. jump 003H;1E1 00000 00001 11100 XX000 11100 X0100 00000 00XX0... HALT ... 76H. 3B0: HALT, jmp $;3B0 01110 11000 01100 XX000 11100 X0100 00000 00XX1./0000 21 LXI H, 00100001 100002 000003 7E MOV A, M0004 3C INR A0005 76 HLT0010 99/

Figura 19.- Microprograma ejemplo: simbólico y microensamblado.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 23 -

Page 26: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

8 EL PERIFÉRICO.

El periférico simulado se detalla en la figura 20. Consta de un registro que se carga al escribir en lapuerta 0, un conversor de digital a analógico y un comparador de tensiones analógicas que devuelve unvalor digital que puede leerse por la puerta 0.

Al escribir, instrucciones OUT se carga un dato en el registro. Este dato se convierte a una tensiónanalógica con la codificación:

00→0 voltios FF→10 voltios

Esta tensión se compara con una entrada externa Vent, generándose un valor lógico que dice siVent > Vref.

Al ejecutar instrucciones IN de lectura de la puerta 0, esta señal pasa al bit menos significativo delbus de datos. El resto del bus puede contener cualquier cosa.

Con este periférico se quiere leer una tensión Vent. Es un caso típico de toma de muestras enprocesos industriales.

IOW

IOR SEL

16 8 bits inferiores

bus de direcciones

1

bit inferior (DATA[8])

Vent > Vref

comparador

V ref8 88

bus

de d

atos

(DA

TA) Vent

{ 0... 10 volt}

reg. D/A

- +

{111111110000000010 volt0 volt

φ1

Figura 20.- Periférico. Conversor de tensión.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 24 -

Page 27: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

9 LA PRÁCTICA

Consiste en emular sobre el P8080E una versión simplificada del microprocesador 68000 de Motoro-la, que llamaremos 68001, y microprogramar un subconjunto de su juego de instrucciones.

La estructura de registros que se debe emular y su correspondencia con el P8080E se muestra en lafigura 21.

D0 y D1 son registros de datos de 8 bits; A0, A1 y A2 son registros de direcciones de 16 bits; CCR(Condition Code Register) y SR son dos formas de ver el registro de estado; PC es el contador deprograma. El registro A2 funciona como registro de pila para los saltos con retorno.

Los registros del P8080E A, TMP, ACT, DI, UV, y WZ son transparentes para el programador ypueden usarse libremente para la microprogramación de cualquier instrucción.

Registros de Datos

Registros de Direcciones

Contador de Programa

Registro de estado(Modo Supervisor)

Registro de Códigos de Condición(Modo Usuario)

D0D1

07

A0A1A2

015

PC015

SR07

CCR07

Registros del P8080

BC

07

00 77D EH L

SP015

PC015

F

F

0

0

7

7

s

s

z

z

v

v

a

a

p

p

c

c

0

0

n

0

Figura 21.- Correspondencia entre registros.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 25 -

Page 28: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

9.1 MODOS DE EJECUCIÓN

El 68000 tiene dos modos o niveles de ejecución: Usuario y Supervisor (o Privilegiado). El modousuario está previsto para la ejecución de la mayor parte de los programas de aplicación. El modosupervisor permite utilizar algunas instrucciones y privilegios adicionales y está previsto para su uso porlos sistemas operativos y otro software de sistemas.

El 68001 también dispone de estos dos modos de ejecución. El flag N (nivel de ejecución) delregistro de estado determina el modo en que el 68001 ejecuta instrucciones: N = 0 indica modo usua-rio. N = 1 indica modo supervisor. En el modo supervisor están accesibles todos los recursos delsistema (registros del procesador, instrucciones y memoria principal). En el modo usuario se restringe eluso de algunos recursos del sistema, en concreto:

- El registro de estado se ve de forma incompleta: el flag N no existe en este modo. Esta visiónincompleta del registro de estado se denomina CCR (Condition Code Register).

- Hay un grupo de instrucciones privilegiadas que no se pueden ejecutar en modo usuario.

- Los 4 primeros Kbytes de memoria principal (direcciones 0000H a 0FFFH) están protegidos yno se puede acceder a ellos en modo usuario.

El 68001 comienza a ejecutar en modo supervisor (N=1) con todos los recursos disponibles, incluidoel flag N. Una vez que el procesador pasa a ejecutar en modo usuario, es decir, se carga un 0 en elflag N, los recursos privilegiados del sistema quedan inaccesibles, lo que permite que se usen de formacontrolada y segura por parte del sistema operativo. La única forma de cambiar de modo usuario amodo privilegiado (obteniendo así acceso a los recursos protegidos) es procesando una excepción.Todas las rutinas que procesan excepciones están protegidas y forman parte del sistema operativo.

El 68001 utiliza dos pilas distintas, una para el modo usuario y otra para el modo supervisor. Lasdos pilas se gestionan con el mismo puntero de pila, el registro A2. Mientras el sistema se encuentra enmodo supervisor (N=1), el registro A2 gestiona la pila correspondiente a este modo y el valor delpuntero de la pila de usuario se almacena en las direcciones de memoria 0000H y 0001H. Al pasar demodo supervisor a modo usuario mediante la ejecución de cualquier instrucción que modifique el flag N(por ejemplo RTE ó LD .SR), el 68001 intercambia los valores del registro A2 y de las direcciones dememoria 0000H y 0001H pasando A2 a gestionar la pila correspondiente al modo usuario. Del mismomodo, cuando el procesamiento de una excepción provoca el paso de modo usuario a modo supervisorcambiando el flag N de 0 a 1, el 68001 intercambia los valores del registro A2 con el contenido de lasdirecciones de memoria 0000H y 0001H, pasando A2 a gestionar, nuevamente, la pila correspondienteal modo supervisor. Es decir, cualquier transición del flag N de 0 a 1 ó de 1 a 0, provoca el intercambiode los punteros de pila.

9.2 PROCESO DE EXCEPCIONES

Como el 68000, el 68001 es capaz de gestionar excepciones (situaciones especiales, en las que elprocesador se comporta de modo distinto a como lo hace durante el proceso normal de ejecución deinstrucciones). El proceso de excepciones se describe a continuación.

- Las 18 primeras posiciones de memoria principal constituyen la tabla de “vectores de excepción”,que son posiciones de las que el procesador lee las direcciones de las rutinas que gestionan cadaexcepción. Todos los vectores de excepción ocupan dos bytes, salvo el vector de RESET queocupa cuatro. Un “número de vector” es un número de 8 bits que multiplicado por dos da ladirección de un vector de excepción, de forma que cada número de vector identifica unívocamenteuna determinada excepción y el vector de excepción que le corresponde.

El procesador forma el vector de excepción desplazando a la izquierda el número de vector unaposición y completando con ceros los bits superiores hasta obtener una dirección de 16 bits.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 26 -

Page 29: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

Si el vector de excepción formado es el 0000H (vector de RESET), el procesador lee de memoriaprincipal los valores iniciales de los registros A2 y PC.

En caso contrario, si la excepción se produjo en modo usuario (N=0), se intercambian los punterosde pila para seleccionar la pila del modo supervisor. A continuación, el procesador salva en la pila elcontenido del registro PC y el registro de estado SR. Por último lee el nuevo valor del PC de la posiciónde memoria a la que apunta el vector de excepción. Una vez hecho esto, activa el flag N (N=1) yreanuda la ejecución de instrucciones a partir de la dirección contenida en el contador de programa. Enla implementación de la UC, el número de vector se pasa al microcódigo en el registro A.

El proceso de una excepción con número de vector almacenado en A y distinto de 00H, es elsiguiente:

1.- Si N es 0, intercambiar los punteros de pila: A2H ←→ [0000H]A2L ←→ [0001H]

2.- Salvar el Contador de Programa en la pila: PCL ⎯→ [--A2]PCH ⎯→ [--A2]

3.- Salvar el Registro de Estado en la pila: SR ⎯→ [--A2]

4.- Encontrar la dirección del vector de excepción y cargarlo en el PC:v = 2·A = 0 0 0 0 0 0 0 A7 A6A5A4A3A2A1A00

[2·A] ⎯→ PCH

[(2·A)+1] ⎯→ PCL

5.- Cambiar a modo privilegiado ‘’1’’ ⎯→ N

6.- Reanudar la ejecución de instrucciones.

Número de Vector Dirección (Hex.) Excepción

0 0000 Reset: Valor inicial para A2

— 0002 Reset: Valor inicial para PC

2 0004 División por Cero

3 0006 Instrucción TRAP #0

4 0008 Instrucción TRAP #1

5 000A Violación de privilegio: Código de operación.

6 000C Violación de privilegio: Fetch de instrucción

7 000E Violación de privilegio: Escritura en memoria.

8 0010 Violación de privilegio: Lectura de memoria.

Tabla de Vectores de Excepción

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 27 -

Page 30: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

El 68001 puede procesar excepciones de cuatro tipos: RESET, División por cero, InstruccionesTRAP y Violación de privilegio.

La excepción de RESET, como su nombre indica, se produce al arrancar el 68001 y sirve paraestablecer las condiciones iniciales mínimas de ejecución de instrucciones, esto es, para dar valoresiniciales al puntero de pila (registro A2), al contador de programa (registro PC) y al registro de estado(flag N = 1. Resto de los flags = 0). Su número de excepción es el 00H y su vector de excepciónocupa 4 bytes; los dos primeros contienen el valor inicial del puntero de pila y los dos siguientes el valorinicial del contador de programa:

[0000H] ⎯→ A2H[0001H] ⎯→ A2L

[0002H] ⎯→ PCH

[0003H] ⎯→ PCL

La excepción de RESET también puede generarse por software mediante la instrucción RESET.

La excepción División por cero se produce durante la ejecución de la instrucción DIV cuando eldivisor es igual a cero. Su número de vector es el 02H.

Las excepciones TRAP, también llamadas “interrupciones software” o “interrupciones síncronas”, seproducen cuando el procesador decodifica una instrucción TRAP. Hay dos excepciones TRAP, que secorresponden con otras dos instrucciones TRAP. Sus números de vector son los siguientes:

Instrucción TRAP #0 ⎯→ Número de vector 03HInstrucción TRAP #1 ⎯→ Número de vector 04H

Las excepciones de Violación de Privilegio se producen al ejecutar en modo usuario instruccionesque realizan alguna acción restringida al modo privilegiado. Hay cuatro posibles causas de violación deprivilegio. Cada una de ellas tiene asociado un número de vector.

La violación de privilegio por Código de Operación se produce al tratar de ejecutar en modo usua-rio instrucciones privilegiadas, es decir, instrucciones que sólo se pueden ejecutar en modo privilegia-do.

La violación de privilegio por Fetch de Instrucción se produce cuando, estando en modo usuario,se trata de ejecutar una instrucción que se encuentra en la zona de memoria protegida (de 0000H a0FFFH).

La violación de privilegio por Escritura en Memoria se produce cuando estando en modo usuario setrata de escribir en la zona de memoria protegida. Las escrituras pueden solicitarse de forma explícita,por ejemplo mediante instrucciones ST, o implícita, por ejemplo mediante instrucciones CALL.

La violación de privilegio por Lectura de Memoria se produce cuando, estando en modo usuario, setrata de leer de la zona de memoria protegida. Las lecturas pueden solicitarse de forma explícita, porejemplo mediante instrucciones LD, o implícita, por ejemplo mediante instrucciones RET.

Para implementar el proceso de excepciones del 68001 debe desarrollar un microprogramaque ha de situar en la dirección 001H de la memoria de control. Dicho microprograma determinarási se ha de procesar un RESET o una excepción en función del valor del registro A, que contendrá elnúmero de vector de la excepción que se debe procesar.

NOTA: El microprocesador 68000 tiene un proceso de excepciones más complejo y completo que eldescrito para el 68001.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 28 -

Page 31: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

9.2.1 GENERACIÓN DE EXCEPCIONES

Como norma general, el tratamiento de las excepciones no debe afectar al comportamiento de losflags. Es decir, si una instrucción no modifica los flags, la detección, generación y tratamiento de unaexcepción provocada durante su ejecución tampoco debe modificarlos, debiendo ser almacenados en lapila en el mismo estado en que se encontraban al comenzar la ejecución de la instrucción y debiendopermanecer en el mismo estado al comienzo de la ejecución de la instrucción siguiente, salvo el flag Nque deberá quedar activado (N=1).

Las excepciones de violación de privilegio por código de operación deben detectarse y procesarseinmediatamente después de decodificar el código de operación, no en la rutina de fetch, sino en elmicrocódigo correspondiente a las instrucciones privilegiadas, pero antes de leer ningún operando (encaso de que los hubiere) y antes de que la instrucción realice ninguna operación. Los flags, registros yposiciones de memoria deben permanecer inalterados. Esto quiere decir que si hay alguna instrucciónque genera este tipo de excepción y tiene al menos un operando, el valor del registro PC que sealmacene en la pila deberá quedar apuntando a la posición del primer operando (esta situación impideque se pueda utilizar una instrucción de retorno de excepción para finalizar el tratamiento de dichaexcepción). En las instrucciones privilegiadas que ocupen únicamente un byte, el valor del registro PCque se almacena en la pila debe apuntar a la instrucción siguiente.

Las excepciones de violación de privilegio por fetch de instrucción deben detectarse y procesarse enla rutina de fetch antes de leer el código de operación. Los flags, registros y posiciones de memoriadeben permanecer inalterados. El valor del registro PC que se almacena en la pila debe apuntar a lainstrucción que provoca la excepción.

Las excepciones de violación de privilegio por escritura en memoria o por lectura de memoria sedetectan y generan durante la ejecución de instrucciones. En la explicación de dichas instrucciones seespecifica el contenido que deben tener, al comienzo de la microrrutina de tratamiento de excepciones,los registros o posiciones de memoria involucrados en cada una de las instrucciones o situaciones enque puede producirse una de estas excepciones.

9.3 JUEGO DE INSTRUCCIONES.

El juego de instrucciones a desarrollar por el alumno se proporciona en documento aparte. En él seincluye también la información oportuna sobre fechas de corrección y otras normas sobre la organiza-ción y evaluación de la práctica.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 29 -

Page 32: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

10 TRABAJO A REALIZAR

Consiste en microprogramar el juego de instrucciones planteado en el apartado anterior y comprobarsu funcionamiento mediante un programa de prueba.

En primer lugar se microprogramarán las instrucciones solicitadas a nivel simbólico (véase el ejem-plo de la figura 18), también llamado nivel RT (Register Transfer), incluyendo todos los comentariosque sean necesarios para facilitar la comprensión del código.

Los microprogramas realizados se traducirán manualmente a micropalabras, con ayuda de la tablade la figura 6 (véase la figura 19). A continuación, se pasarán por el simulador del P8080E(P8080E.EXE), residente en los PC’s del Centro de Cálculo de la Facultad. Este simulador generaopcionalmente un listado de salida con dos partes:

mpc SR A AC T DI IR SZVA-PNC DR UV WZ BC DE HL SP PC ADDR DT MR MW IR IW RY HT Vent Vref

001 000 00 00 00 00 00 00000010 00 0000 0000 0000 0000 0000 0000 0000 0000 FF 0 0 0 0 1 0 2.100 0.000002 000 00 00 00 00 00 00000010 00 0000 0000 0000 0000 0000 0000 0000 0000 FF 0 0 0 0 1 0 2.100 0.000003 000 00 00 00 00 00 00000010 00 0000 0000 0000 0000 0000 0000 0001 0000 FF 1 0 0 0 0 0 2.100 0.000004 000 00 00 00 00 FF 00000010 00 0000 0000 0000 0000 0000 0000 0001 0000 3D 1 0 0 0 0 0 2.100 0.000004 000 00 00 00 00 3D 00000010 00 0000 0000 0000 0000 0000 0000 0001 0000 21 1 0 0 0 1 0 2.100 0.000004 000 00 00 00 00 21 00000010 00 0000 0000 0000 0000 0000 0000 0001 0000 21 0 0 0 0 1 0 2.100 0.000005 000 00 00 00 00 21 00000010 00 0000 0000 0000 0000 0000 0000 0001 0000 FF 0 0 0 0 1 0 2.100 0.000

108 000 00 00 00 00 21 00000010 00 0000 0000 0000 0000 0000 0000 0002 0001 FF 1 0 0 0 0 0 2.100 0.000109 000 00 00 00 21 21 00000010 00 0000 0000 0000 0000 00FF 0000 0002 0001 36 1 0 0 0 0 0 2.100 0.000109 000 00 00 00 21 21 00000010 00 0000 0000 0000 0000 0036 0000 0002 0001 10 1 0 0 0 1 0 2.100 0.000109 000 00 00 00 21 21 00000010 00 0000 0000 0000 0000 0010 0000 0002 0001 10 0 0 0 0 1 0 2.100 0.00010A 000 00 00 00 21 21 00000010 00 0000 0000 0000 0000 0010 0000 0003 0002 FF 1 0 0 0 0 0 2.100 0.00010B 000 00 00 00 21 21 00000010 00 0000 0000 0000 0000 FF10 0000 0003 0002 FF 1 0 0 0 0 0 2.100 0.00010B 000 00 00 00 21 21 00000010 00 0000 0000 0000 0000 FF10 0000 0003 0002 30 1 0 0 0 0 0 2.100 0.00010B 000 00 00 00 21 21 00000010 00 0000 0000 0000 0000 3010 0000 0003 0002 00 1 0 0 0 1 0 2.100 0.00010B 000 00 00 00 21 21 00000010 00 0000 0000 0000 0000 0010 0000 0003 0002 00 0 0 0 0 1 0 2.100 0.00010C 000 00 00 00 00 21 00000010 00 0000 0000 0000 0000 0010 0000 0003 0002 FF 0 0 0 0 1 0 2.100 0.000

003 000 00 00 00 00 21 00000010 00 0000 0000 0000 0000 0010 0000 0004 0003 FF 1 0 0 0 0 0 2.100 0.000

mpc SR A AC T DI IR SZVA-PNC DR UV WZ BC DE HL SP PC ADDR DT MR MW IR IW RY HT Vent Vref

004 000 00 00 00 00 FF 00000010 00 0000 0000 0000 0000 0010 0000 0004 0003 7F 1 0 0 0 0 0 2.100 0.000004 000 00 00 00 00 7F 00000010 00 0000 0000 0000 0000 0010 0000 0004 0003 7E 1 0 0 0 1 0 2.100 0.000004 000 00 00 00 00 7E 00000010 00 0000 0000 0000 0000 0010 0000 0004 0003 7E 0 0 0 0 1 0 2.100 0.000005 000 00 00 00 00 7E 00000010 00 0000 0000 0000 0000 0010 0000 0004 0003 FF 0 0 0 0 1 0 2.100 0.000

3F0 000 00 00 00 00 7E 00000010 00 0000 0000 0000 0000 0010 0000 0004 0010 FF 1 0 0 0 0 0 2.100 0.0003F1 000 FF 00 00 7E 7E 00000010 00 0000 0000 0000 0000 0010 0000 0004 0010 FF 1 0 0 0 0 0 2.100 0.0003F1 000 FF 00 00 7E 7E 00000010 00 0000 0000 0000 0000 0010 0000 0004 0010 DB 1 0 0 0 0 0 2.100 0.0003F1 000 DB 00 00 7E 7E 00000010 00 0000 0000 0000 0000 0010 0000 0004 0010 99 1 0 0 0 1 0 2.100 0.0003F1 000 99 00 00 7E 7E 00000010 00 0000 0000 0000 0000 0010 0000 0004 0010 99 0 0 0 0 1 0 2.100 0.0003F2 000 99 00 00 00 7E 00000010 00 0000 0000 0000 0000 0010 0000 0004 0010 FF 0 0 0 0 1 0 2.100 0.000

003 000 99 00 00 00 7E 00000010 00 0000 0000 0000 0000 0010 0000 0005 0004 FF 1 0 0 0 0 0 2.100 0.000004 000 99 00 00 00 FF 00000010 00 0000 0000 0000 0000 0010 0000 0005 0004 FF 1 0 0 0 0 0 2.100 0.000004 000 99 00 00 00 FF 00000010 00 0000 0000 0000 0000 0010 0000 0005 0004 BE 1 0 0 0 0 0 2.100 0.000004 000 99 00 00 00 BE 00000010 00 0000 0000 0000 0000 0010 0000 0005 0004 3C 1 0 0 0 1 0 2.100 0.000004 000 99 00 00 00 3C 00000010 00 0000 0000 0000 0000 0010 0000 0005 0004 3C 0 0 0 0 1 0 2.100 0.000005 000 99 00 00 00 3C 00000010 00 0000 0000 0000 0000 0010 0000 0005 0004 FF 0 0 0 0 1 0 2.100 0.000

1E0 000 9A 00 00 00 3C 10000110 00 0000 0000 0000 0000 0010 0000 0005 0004 FF 0 0 0 0 1 0 2.100 0.000

mpc SR A AC T DI IR SZVA-PNC DR UV WZ BC DE HL SP PC ADDR DT MR MW IR IW RY HT Vent Vref

1E1 000 9A 00 00 00 3C 10000110 00 0000 0000 0000 0000 0010 0000 0005 0004 FF 0 0 0 0 1 0 2.100 0.000003 000 9A 00 00 00 3C 10000110 00 0000 0000 0000 0000 0010 0000 0006 0005 FF 1 0 0 0 0 0 2.100 0.000004 000 9A 00 00 00 FF 10000110 00 0000 0000 0000 0000 0010 0000 0006 0005 7F 1 0 0 0 0 0 2.100 0.000004 000 9A 00 00 00 7F 10000110 00 0000 0000 0000 0000 0010 0000 0006 0005 76 1 0 0 0 1 0 2.100 0.000004 000 9A 00 00 00 76 10000110 00 0000 0000 0000 0000 0010 0000 0006 0005 76 0 0 0 0 1 0 2.100 0.000005 000 9A 00 00 00 76 10000110 00 0000 0000 0000 0000 0010 0000 0006 0005 FF 0 0 0 0 1 0 2.100 0.0003B0 000 9A 00 00 00 76 10000110 00 0000 0000 0000 0000 0010 0000 0006 0005 FF 0 0 0 0 1 1 2.100 0.000

Figura 22.- Simulación: traza del p8080e.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 30 -

Page 33: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

1.- Copia de las líneas de entrada numeradas.2.- Traza de ejecución (véase el ejemplo de la figura 22).

Para comprobar el funcionamiento de los microprogramas realizados se debe crear un fichero cuyocontenido tenga el formato que se puede ver en la figura 19, esto es:

- El contenido de la memoria de control: las microinstrucciones.

- Una línea con “/” en la primera posición.

- El contenido de la memoria principal: la tabla de vectores de excepción, las instrucciones ylos datos.

- Otra línea con “/” en la primera posición.

Las microinstrucciones son micropalabras para la memoria de control y su formato de entrada es elsiguiente:

- 3 dígitos hexadecimales que especifican la dirección de memoria de control.

- 40 bits (1, 0 o X) que son el contenido de esta dirección.

Este último campo puede contener blancos en cualquier posición para facilitar la lectura.

En el ejemplo(1 de la figura 19, aparte de las líneas de comentarios (cuyo primer carácter es “.”), sehan introducido microinstrucciones en las siguientes direcciones de la memoria de control:

001 002 RESET003 004 005 FETCH108 109 10A 10B 10C LXI H, d163F0 3F1 3F2 MOV A, M1E0 1E1 INR A3B0 HLT

La memoria principal contendrá, la tabla de vectores de excepción, el programa de prueba, realizadocon el juego de instrucciones microprogramado, y los datos de entrada. En el ejemplo anterior, elprograma está a partir de la dirección 0000H de memoria principal y es:

fuente código máquina

LXI H, 0010H 21 10 00MOV A, M 7EINR A 3CHLT 76

y la posición 0010H contiene el valor 99H (dato de entrada para el programa principal).

El formato del programa de entrada al simulador es el siguiente:

- 4 dígitos hexadecimales que son la dirección de memoria principal.

- 2 dígitos hexadecimales, que son el contenido de esta dirección.

- Comentarios (en este campo se debe escribir el código ensamblador).

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 31 -

1 Este ejemplo no corresponde a la versión actual del procesador a implementar. Por lo tanto, lasinstrucciones utilizadas, así como los microprogramas de Reset, Fetch, etc. son diferentes a losque se han de realizar.

Page 34: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

El P8080E arranca, según se dijo anteriormente, ejecutando la microinstrucción 001 después dehaber inicializado a 00H todos los registros. En esta dirección debe comenzar la microrrutina de proce-so de excepciones, que, debido a la inicialización de los registros, debe leer un 00H del registro A y,por tanto, realizar el proceso correspondiente a la excepción de RESET: Inicializar los registros A2 y PCy poner un 1 en el flag N del registro de estado (el resto de los flags quedan a 0).

Seguidamente iría la microrrutina de FETCH, que debe incluir la detección de las excepciones deviolación de privilegio por fetch de instrucción. La primera instrucción que se ejecuta estará en la direc-ción de memoria principal que previamente ha guardado en el PC la rutina de proceso de excepcionestras leerla de las direcciones 0002H y 0003H de memoria principal.

Con toda esta información, P8080E empieza a funcionar ciclo a ciclo, generando una línea de trazacon cada flanco ascendente de φ1, justo antes del flanco.

El juego de instrucciones planteado implica un uso muy frecuente de zonas de microcódigo común avarias instrucciones. Para compartir microcódigo hay dos alternativas:

- Saltos incondicionales a la zona de microcódigo común.

- Saltos a microsubrutina (tres niveles como máximo).

El paso de parámetros se realizará mediante los registros transparentes al programador.

10.1 VERSIÓN NO INTERACTIVA DEL SIMULADOR

Además de la versión interactiva del simulador, está disponible otra versión no interactiva que permi-te limitar el tiempo de ejecución y genera como resultado dos ficheros: 1) la traza de ejecución y 2) elvalor de ciertos registros y posiciones de memoria al final de la ejecución. El simulador se invoca delsiguiente modo:

P8080ENI.EXE fich.ent fich.sal

donde fich.ent es el fichero de entrada que contiene la memoria de control y la memoria principal, yfich.sal es la traza de ejecución (NUL si no se desea generar el fichero de traza).

Este simulador acepta cuatro opciones, /v, /m, /a y /w, que permiten controlar su ejecución.

La opción /v permite conocer la versión del simulador que se está ejecutando.

La opción /m “microciclos” permite especificar el máximo número de microciclos que se debensimular.

La opción /a “alarma” permite especificar el tiempo máximo de ejecución en segundos. Si se invocael simulador con las opciones /m y /a de forma simultánea, sólo se tiene en cuenta la opción /m.

Por ejemplo:

G:\DATSI\P8080E\P8080ENI /a15 mcont_pp.p80 traza

Además de la traza de ejecución, este simulador puede generar un fichero de resultados en el quese incluyen los valores que tienen ciertos registros y posiciones de memoria al final de la ejecución. Laespecificación de qué registros y posiciones de memoria se deben incluir en este fichero de resultadosse lee de otro fichero de configuración cuya sintaxis se explica en un fichero ejemplo llamadop8080.cfg que se encuentra en el directorio G:\DATSI\P8080E.

El nombre de ambos ficheros de resultados y de configuración se toma del fichero de entrada, el quecontiene la memoria de control, al que se le sustituye su extensión por las extensiones ‘.sal’ y ‘.cfg’respectivamente. En el ejemplo anterior el nombre de estos ficheros sería mcont_pp.sal ymcont_pp.cfg.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 32 -

Page 35: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

Esta versión no interactiva está también disponible para ejecutar en un computador con sistemaoperativo Linux.

Todas las versiones del simulador, así como un ejemplo del fichero de configuración y una versiónpara windows 95 (y siguientes) con acceso a internet del programa de entrega de la práctica estándisponibles a través de la página WEB de la práctica:

http://datsi.fi.upm.es/docencia/Estructura/U_Control

10.2 DURACIÓN DE LOS CICLOS DE ESPERA

Existe una última opción, /w, que, si se especifica en la línea de comando mediante la que se invocael simulador (ya sea el denominado “interactivo” o el “no interactivo”), sirve para controlar el número deciclos de espera que se producirá en los accesos a memoria. El empleo de esta opción es muy útil paradepurar el microcódigo correspondiente a los accesos a memoria.

Si no se incluye la opción /w, el número de ciclos de espera de cada ciclo de memoria será aleato-rio, variando entre 0 y 3, por lo que se generarán trazas de ejecución distintas para cada simulación delmismo programa. Si se incluye la opción /wf, el número de ciclos de espera será también aleatorio,pero siguiendo una secuencia fija que se repite en cada ejecución del microprograma en el simulador;por lo tanto, varias simulaciones del mismo programa generarán trazas de ejecución idénticas.

Si se incluye la opción /w<n> con n comprendido entre 0 y 9 (ej.: /w6), todos los accesos a memoriatendrán el mismo numero n de ciclos de espera. Mediante esta opción se podrá comprobar el funciona-miento de todos los accesos a memoria en los casos extremos: cuando la memoria responde inmedia-tamente (/w0) y cuando lo hace empleando un elevado número de ciclos de espera.

11 NORMAS DE ENTREGA DE LA PRÁCTICA

Para evaluar el trabajo realizado por los alumnos en esta práctica de microprogramación, se ejecuta-rá, utilizando la memoria de control proporcionada por los alumnos, una serie de programas de prueba.Para que ello sea posible, cada grupo de alumnos deberá entregar dos ficheros cuyo formato se especi-fica más adelante. Adicionalmente, deberá entregarse una memoria descriptiva del trabajo realizado,cuyos objetivos y normas básicas de redacción se describen a continuación.

11.1 MEMORIA DE LA PRÁCTICA

El trabajo realizado en la práctica de microprogramación debe quedar reflejado en una memoriadescriptiva del mismo. Esta memoria complementará adecuadamente al conjunto de microprogramasque se han de entregar para su corrección automática.

El objetivo de esta memoria descriptiva es semejante al de cualquier documentación que comple-mente un trabajo técnico: ha de describir el trabajo realizado de forma coherente y estructurada, dandouna visión global del mismo. En particular, se debe hacer referencia a todos aquellos aspectos de larealización del trabajo que han supuesto mayor dificultad o cuya comprensión pueda resultar más costo-sa. Al documentar correctamente el trabajo se facilita, y esta es una de las funciones principales de ladocumentación, que, transcurrido cierto tiempo, el autor del mismo u otra persona pueda realizar modifi-caciones y detectar o corregir errores de implementación. Aunque la realización de una práctica difieredel desarrollo de un proyecto real, se debe redactar su documentación como si de un proyecto real setratase, tratando de conseguir los mismos objetivos mencionados anteriormente.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 33 -

Page 36: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

A partir de estas líneas generales, se pueden señalar algunos aspectos concretos para la elabora-ción de la memoria de la práctica, si bien se trata de una labor que cada grupo abordará de formaindependiente. No se trata por tanto de establecer una estructura común, sino de aclarar algunos as-pectos básicos:

- Debe comenzar la elaboración de la memoria al tiempo que se realiza el trabajo.

- No debe considerarse como un límite absoluto, pero no debería ser necesario emplear más de10 páginas.

- No debe incluirse el listado de microinstrucciones.

- No hay ningún problema por repetir información ya conocida, como la que aparece en el enuncia-do, si es que con ello se facilita la comprensión global del trabajo.

- Una posible organización de la memoria es la siguiente:

IntroducciónImplementación. En este apartado podría incluirse entre otras la siguiente información:- direcciones que ocupa cada “pieza” de microcódigo: las distintas subrutinas, el fetch, cada

instrucción, la excepción de reset, el resto de excepciones, etc.- formato de la memoria de control entregada (mcont_pp.p80): si se ha utilizado o no algún

convenio a para describir (en las líneas de comentario) cada instrucción, cada subrutina, etc.Si está ordenada por microdirecciones, por el orden en que se ha ido desarrollando elmicrocódigo, si no tiene ningún orden particular, etc.

- cualquier otra consideración sobre cómo se ha desarrollado la práctica (p.e. si normalmentese salvaguardan los flags en un mismo registro interno, si eso depende de la instrucción quese está implementando, etc.)

Pruebas. En este apartado podría incluirse, entre otras, la siguiente información:- Código completo y comentado de una prueba completa, indicando los valores esperados

para los distintos registros y posiciones de memoria.- Enumeración de las pruebas desarrolladas con los casos que prueba cada una de ellas,

p.e.:

prueba 1: Comprueba el arranque de la máquina (reset)prueba 2: . . . .prueba 3: Comprueba Reset, JMP.U, HALT en modo usuario y HALT en modo supervisorprueba 4: . . . .. . . . . . . . .

Comentarios personales. En este apartado, podría incluirse:- Tiempo (aproximado) que ha supuesto entender, desarrollar y depurar la práctica- Posibles aspectos a mejorar: qué conceptos, detalles, o explicaciones son más difíciles de

entender

La descripción de los casos de prueba empleados sirve, además de para mostrar la calidad y canti-dad de las pruebas utilizadas, para facilitar la confirmación de errores una vez que éstos se han locali-zado, ya que se podrá observar si la situación que provoca el error ha sido o no comprobada.

La MEMORIA, que se presentará en formato DIN A4, deberá contener en la portada los siguientesdatos:

- Identificación de la práctica: Práctica de microprogramación, 2º curso, plan 1996.

- Curso académico y convocatoria

- Identificación del autor o autores: apellidos, nombre y número de matrícula de cada uno

- Identificación del grupo de prácticas (nº de matrícula elegido como identificador)

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 34 -

Page 37: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

11.2 FORMATO DE LOS FICHEROS

Además de la memoria, deberán entregarse dos ficheros para permitir la corrección de la práctica:

- mcont_pp.p80: Este fichero deberá incluir el contenido de la memoria de control y de la memo-ria principal tal como se describe en el apartado 10 y en la figura 19. La memoria de controldeberá incluir los microprogramas, comentados, descritos en el apartado a) de la memoria. Lamemoria principal deberá incluir la tabla de vectores de excepción y un programa de prueba,que funcione correctamente, con los datos de entrada que sean pertinentes.

- autores.p80: Este fichero se entrega solamente una vez para dar de alta al grupo de auto-res. Deberá contener, única y exclusivamente, una línea por cada autor de la práctica, con suidentificación. El formato debe ser el siguiente (atención: los signos de puntuación son significa-tivos):

Nº Matrícula; DNI; apellido apellido, nombre;

El número de matrícula que se debe indicar, en el fichero de autores, es el que asigna la secretaríade la Facultad (por ejemplo 990999) y no el que se utiliza como identificador para abrir cuentas en elCentro de Cálculo (por ejemplo a990999).

11.3 PROGRAMA DE ENTREGA DE LOS FICHEROS DE LA PRÁCTICA

Para entregar los dos ficheros cuyo formato se describe en el apartado anterior, se deberá ejecutarel programa de entrega est_p80 que está disponible en la red de PCs y en zipi.fi.upm.es. En la red dePCs el programa se encuentra en el directorio “G:\DATSI\ENTREGAS”, mientras que en zipi.fi.upm.esestá disponible como si fuera un comando más del sistema operativo.

También se podrá realizar mediante una aplicación Web que permite realizar las mismas operacio-nes que el programa est_p80. La URL en la que se encuentra es:

http://www.datsi.fi.upm.es/Practicas

que también está accesible desde las páginas web de la práctica y de la asignatura.

11.3.1 Programa de entrega para computadores PC-Windows con acceso a Internet

Aquellos alumnos que tengan acceso a un computador personal con Windows 95/98 (y siguientes) yconexión a Internet, pueden instalar un programa de entrega en dicho computador. Este programa lespermitirá realizar las mismas operaciones que los programas est_p80 de la red de PCs o dezipi.fi.upm.es y se puede recoger mediante un “navegador web” accediendo a la página de la práctica:

http://www.datsi.fi.upm.es/docencia/Estructura/U_Control/

Una vez obtenido, se ha de desempaquetar con pkunzip ó con winzip, lo que generará los ficherosmencionados más arriba (más varios .BAT adicionales, para entregar otras prácticas, que no tienenutilidad para la de microprogramación).

11.3.2 Uso del programa de entrega de la práctica

El programa permite, además de entregar los ficheros indicados anteriormente, consultar los resulta-dos de la evaluación de la práctica y noticias que vayan surgiendo durante el periodo de realización dela práctica.

Al entrar en el programa, en primer lugar se identifica la práctica y la convocatoria. El mismo progra-ma se utiliza para entregar prácticas de varias asignaturas del departamento DATSI y, por otro lado,pueden solaparse los periodos de realización de una misma práctica para dos convocatorias, p.e. febre-ro y junio. Para evitar confusiones, es importante comprobar que se está usando el programa deentrega adecuado.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 35 -

Page 38: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

Estructura de Computadores. Practica de microprogramacion (P8080E)Febrero 2007Servidor de Practicas. Version 1.9.2.1

A continuación el programa pide la identificación del usuario. Tomaremos como identificación deusuario el número de matrícula de uno de los integrantes del grupo. El programa mostrará el mensaje:

Introduzca su identificador (Num. matricula): 990999

El usuario deberá introducir el número de matrícula de uno de los integrantes del grupo (en elejemplo anterior 990999).

Si es la primera vez que el usuario entra en el sistema de entrega, el programa le invitará a queintroduzca una palabra clave (“password”) mostrando el siguiente mensaje:

Se va a establecer password.Password:

El usuario deberá introducir una palabra clave (no se mostrará en pantalla). Para confirmar que nose ha producido ningún error al introducir el password, se vuelve a pedir:

Repita el password tecleado anteriormente:

Si se ha producido algún error se mostrara el mensaje:

Passwords no coinciden

El programa solicita el password hasta tres veces. Si persisten los errores muestra el siguientemensaje y termina.

Conexión cerrada

Si el comando se ha ejecutado con éxito, se intentará acceder al fichero ‘’autores.p80’’, que debeestar en el directorio desde el que se está ejecutando el programa de entrega. Si dicho fichero existe yla información que contiene es correcta, se mostrara el mensaje:

MANDANDO EL FICHERO autores.p80 ... OK.

SE HAN DADO DE ALTA LOS SIGUIENTES ALUMNOS:990999 012345678 Español Español Juan

Se ha asignado password al usuario 990999.- NO LO OLVIDE- NO LO APUNTE- NO LO DIVULGUE

A continuación se mostrara una identificación de la práctica y la convocatoria, junto con el siguientemenú:

OPCIONES:

1. Mandar Ficheros.2. Consultar Resultados.3. Cancelar Entregas4. Bloquear la Entrega5. Ayuda !!!!6. Noticias. (05/11/11/ 18:45)q . Abandonar

>>

Más adelante se explica cada una de las opciones del menú.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 36 -

Page 39: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

Sin embargo, es posible que se detecte algún problema relacionado con el fichero de autores, porejemplo que no se encuentre en el directorio de trabajo, o que alguno de los números de DNI que en élse encuentran no está registrado en la base de datos de alumnos. En el primero de estos casos, semostraría el siguiente mensaje:

No se puede abrir el fichero autores.p80Entrega cancelada.

En el segundo caso (DNI no existente en la base de datos de alumnos), se mostraría el siguientemensaje:

******************************************************EL DNI 012345678 NO ESTA EN LALISTA DE LA ASIGNATURACOMPRUEBE EL DNI O CONSULTE A SUPROFESOR DE PRACTICAS******************************************************

No se puede poner password

Otros errores que se detectan y señalan al usuario, relacionados con el fichero de autores, son loscorrespondientes a uno o varios autores cuya descripción es incorrecta (p.e. el DNI contiene caracteresalfabéticos) o que ya están dados de alta en otro grupo de prácticas.

DESCRIPCIÓN DE LAS OPCIONES DEL MENÚ DEL PROGRAMA DE ENTREGA

1. MANDAR FICHEROS

Esta opción permite mandar los ficheros de una práctica, que deberán estar en el directorio detrabajo del usuario. Si el comando se ejecuta correctamente se mostrarán los siguientes mensajes:

MANDANDO EL FICHERO mcont_pp.p80 ...OK.

Si este fichero no se encuentra, el programa lo comunicará al usuario:

MANDANDO EL FICHERO mcont_pp.p80 ...No se puede abrir el fichero mcont_pp.p80Entrega cancelada.

El servidor de entregas intenta asegurar que cada uno de los ficheros enviados (en este caso sola-mente el fichero mcont_pp.p80) tiene el formato correcto. Para ello trata de ejecutar un programa princi-pal con la memoria de control entregada. Si el simulador del P8080E no puede arrancar la simulacióndebido a errores de formato, se muestra el siguiente mensaje:

EL FICHERO mcont_pp.p80 NO TIENE EL FORMATO CORRECTOENTREGA NO REALIZADA

En este caso el alumno deberá obtener la traza de ejecución que genera su fichero mcont_pp.p80(mediante la versión no interactiva del simulador o ejecutando en fichero). En ella podrá localizar facil-mente mensajes de error correspondientes a errores de formato, duplicación de microinstrucciones,direcciones incorrectas, etc. Una vez corregidos todos los errores y depurada totalmente la práctica,deberá proceder a una nueva entrega.

Cada vez que un alumno realiza la entrega de una práctica, se cancelan todas las entregaspendientes de corrección correspondientes a dicho alumno. Si dicha entrega es errónea por algúnmotivo, también se anula esa entrega.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 37 -

Page 40: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

2. CANCELAR ENTREGAS

Esta opción permite cancelar todas las entregas realizadas correctamente desde la última corrección.El grupo de prácticas será eliminado de la lista de prácticas pendientes de corrección. Si se han realiza-do varias entregas, correctamente o no, quedarán canceladas todas ellas.

3. CONSULTAR RESULTADOS

Esta opción permite consultar los resultados de la corrección de una práctica entregada. El programapide el nombre de un fichero en el que se copiarán los resultados de la ejecución del conjunto de testsde pruebas que componen el corrector. Se mostrará el siguiente mensaje:

La salida será redirigida a un fichero.

Nombre del fichero (ENTER para salida por pantalla) ?? result.txt

En este caso se grabarán los resultados de las pruebas en el fichero result.txt. Si como respuesta almensaje se pulsa la tecla ENTER, los resultados serán mostrados por pantalla.

4. BLOQUEO DE LA ENTREGA

Si el usuario no desea entregar más veces la práctica, por haber superado todas las pruebas, puedebloquear la entrega para mayor seguridad. Para ello deberá seleccionar esta opción, en cuyo caso nose podrá volver a realizar una nueva entrega de los ficheros asociados a la práctica. Si la opción serealiza satisfactoriamente, tras solicitar al usuario confirmación para bloquear la entrega, se mostrará elmensaje:

ENTREGA BLOQUEADA.

5. AYUDA

Esta opción mostrará en pantalla una breve descripción de cada una de las opciones del programade entrega.

6. NOTICIAS

Esta opción permite notificar al alumno modificaciones en la especificación de la práctica o, engeneral, noticias de interés de la práctica. En el menú general del programa de entrega aparece lafecha y hora de la última actualización. El programa pide el nombre de fichero en el que se copiarán lasnoticias.

La salida será redirigida a un fichero.

Nombre del fichero (ENTER para salida por pantalla) ?? noticias.txt

En este caso se grabará la información relativa a la asignatura en el fichero noticias.txt. Si comorespuesta al mensaje se pulsa la tecla ENTER, la información será mostrada por pantalla.

Se ha establecido una clave general de acceso (restringido) al programa de entregas, de forma queel alumno interesado en acceder únicamente al fichero de noticias pueda hacerlo a través de estaclave, incluso si no está dado de alta en ningún grupo de prácticas. Se trata del identificador p80, alque se accede con la clave (password) p80.

q. ABANDONAR

Termina la ejecución del programa de entrega. Si se realiza con éxito se mostrará el mensaje:

Cerrando la conexión

y a continuación aparecerá el “prompt” del sistema operativo.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 38 -

Page 41: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

NOTA IMPORTANTE: Para evitar la difusión o copia de la práctica, se recomienda encarecida-mente trabajar sobre discos flexibles o formatear la unidad de disco D (FORMAT /Q D:) y apagar elordenador.

Cualquier fichero que no haya sido borrado mediante este procedimiento, u otro semejante, quedaráa merced del uso indebido que terceras personas puedan hacer de él. Se recuerda a los alumnos que,en caso de detección de copia, se aplicarán las normas de la asignatura sobre copia de exámenes atodos los alumnos implicados.

Aquellos alumnos que trabajen en zipi o en batman deben proteger sus directorios y ficheros ade-cuadamente mediante los comandos que ambos sistemas proporcionan.

11.4 INTERPRETACIÓN DEL FICHERO DE RESULTADOS

Para poder interpretar correctamente el fichero de resultados que proporciona el corrector automáticode la práctica, se han de tener en cuenta los siguientes aspectos:

- Los resultados de cada prueba se generan una vez que el simulador ha ejecutado el códigomáquina correspondiente a dicha prueba con la memoria de control proporcionada por el alumno (ogrupo).

- La ejecución de dicho código finaliza cuando se cumple una de las siguientes condiciones:

• Terminación normal: Se lee y ejecuta una instrucción que determina la finalización del programa(HALT)

• Timeout: Ha transcurrido un tiempo excesivo desde que el programa se puso en funcionamien-to, lo que se interpreta (habitualmente es así) que se está ejecutando un bucle infinito deinstrucciones o de microinstrucciones, por lo que se cancela la ejecución del programa, inde-pendientemente del punto de ejecución en que se encuentre.

• Microinstrucción no definida: La unidad de control trata de ejecutar una microinstrucción que noestá definida en la memoria de control.

- Una vez finalizada la ejecución se obtiene la siguiente información:

• el contenido de los registros y de algunas posiciones de memoria que han debido quedar conciertos valores conocidos de antemano.

• las últimas líneas de la traza de ejecución de microinstrucciones.• la primera diferencia detectada entre dos trazas de ejecución de instrucciones: la obtenida con

la memoria de control proporcionada por los alumnos y la considerada como traza oficial deejecución de instrucciones.

- Se proporciona al alumno el contenido real de los registros y posiciones de memoria involucrados,así como el valor que deberían tener, en caso de que no sean correctos. Téngase en cuenta quesi el programa se ha detenido por “timeout”, el contenido de la mayoría de esas posiciones yregistros no es significativo.

EJEMPLO

REGISTRO B: 00REGISTRO C: 00REGISTRO D: 00REGISTRO E: 00REGISTRO H: 00REGISTRO L: 00REGISTRO SP: 1FFC (valor correcto: 0FF8)REGISTRO PC: 0059 (valor correcto: 005E)REGISTRO F: 02 (valor correcto: 56)DIRECCION 0000: 0F (valor correcto: 1F)DIRECCION 0001: FF

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 39 -

Page 42: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

- Se proporcionan también las últimas líneas de la traza de ejecución de microinstrucciones, debidoa que, en algunos casos, sirven para detectar errores en la microprogramación de las instruccio-nes. Esto ocurre, por ejemplo, cuando desde una cierta microinstrucción se realiza un salto a unamicrodirección cuyo contenido no está definido en la memoria de control o cuando una microins-trucción realiza un salto incondicional a sí misma, etc. La información proporcionada por estasúltimas líneas de la traza de ejecución de microinstrucciones no siempre es significativa.

EJEMPLO

Últimas lineas de la traza:

- Tal como se ha indicado anteriormente, se comparan dos trazas de ejecución de instrucciones: laobtenida con la memoria de control proporcionada por los alumnos y la considerada como oficial.Si existen diferencias entre dichas trazas, se proporciona la primera de ellas, de modo que sepueda identificar qué registros son los que han alcanzado un valor que no es el correcto y cuál esla instrucción en que esto ha ocurrido. Téngase en cuenta que la ejecución del programa nofinaliza al detectarse esta diferencia (de hecho, la diferencia se detecta a-posteriori, al analizar lastrazas completas de microinstrucciones), por lo que esta instrucción no necesariamente ha detener relación alguna con las últimas microinstrucciones proporcionadas. Por otro lado, es posibleque, aún siendo idénticas la traza de ejecución de instrucciones oficial y la obtenida con la memo-ria de control de los alumnos, el resultado de esta prueba no sea satisfactorio: puesto que en latraza de ejecución de instrucciones se proporciona el contenido de todos los registros, incluido elde Flags, el error estaría producido en este caso por diferencias en algunas posiciones de memo-ria, lo que indicaría que la implementación de alguna instrucción de escritura sería incorrecta.

EJEMPLOComparacion de trazas (de instrucciones):

IR SZVA-PNC BC DE HL SP PCAlumnos:016 68| 00000011 | 0000 | 0000 | 0000 | 0508 | 011E NEG.W017 4C| 01010110 | 0000 | 0000 | 0000 | 0508 | 011F STM #m,[.A2--]Oficial:016 68| 00000011 | 0000 | 0000 | 0000 | 0508 | 011E NEG.W017 4C| 01000010 | 0000 | 0000 | 0000 | 0508 | 011F STM #m,[.A2--]Diferencias en: FLAGS.

Obsérvese en este ejemplo que la primera línea de las trazas de instrucciones encabezadas como“Alumnos” y “Oficial” son idénticas, mientras que las diferencias (en este caso en los Flags) se encuen-tran en la segunda línea, que es la que contiene el estado en que quedan los registros tras ejecutar lainstrucción de la primera línea (en este caso NEG.W).

mpc SR A AC T DI IR SZVA-PNC DR UV WZ BC DE HL SP PC ADDR DT MR MW IR IW RY HT Vent Vref029 000 00 00 00 05 FF 00000010 01 0000 0114 0000 0000 0000 0FEF 0F02 0F01 4D 1 0 0 0 0 0 4.840 0.000029 000 00 00 00 05 4D 00000010 01 0000 0114 0000 0000 0000 0FEF 0F02 0F01 00 1 0 0 0 1 0 4.840 0.000029 000 00 00 00 05 00 00000010 01 0000 0114 0000 0000 0000 0FEF 0F02 0F01 00 0 0 0 0 1 0 4.840 0.00002A 000 00 00 00 05 00 00000010 01 0000 0114 0000 0000 0000 0FEF 0F02 0F01 FF 0 0 0 0 1 0 4.840 0.000000 microinstruccion no definida.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 40 -

Page 43: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

11.5 SERVICIOS DE ENSAMBLADO Y EXTRACCION DE TRAZAS

Existe un servicio que permite ensamblar programas de prueba y extraer la traza de instruccionesque se han ejecutado en una simulación. Para usarlo se debe indicar un fichero de entrada. Dependien-do del contenido de dicho fichero se realizará un servicio u otro.

Si el fichero de entrada contiene en su primera línea un caracter "#", se supondrá que el ficherocontiene un programa de prueba escrito en ensamblador y usando los mnemónicos del juego de ins-trucciones correspondiente a la práctica. En tal caso, se ensambla el programa de prueba y se generacomo resultado el contenido de la memoria principal que hay que incluir como parte del fichero deentrada para que el simulador P8080E ejecute dicho programa de prueba.

Si el fichero de entrada es el fichero de salida correspondiente a la ejecución de un programa deprueba en el simulador P8080E, de la traza de microinstrucciones generada por el simulador se extraela traza de instrucciones que se han ejecutado, incluyendo los valores que los registros visibles por elprogramador contenían antes de la ejecución de cada instrucción. Dicha traza se genera como resulta-do del servicio.

El servicio está disponible mediante el gestor de entrega de prácticas de la página web de la asigna-tura y también, usando el programa de entrega de prácticas del Centro de Cálculo. En el primer casohay que seleccionar "Servicios P8080E" y en el segundo hay que ejecutar el siguiente mandato:

G:\DATSI\ENTREGAS\cliente -p 7015

En ambos casos se deben usar los mismos Usuario y Clave (Identificador y Password) que parausar los sistemas de entrega de la práctica.

La información detallada de estos servicios, puede encontrarse en la página web de la práctica:

http://www.datsi.fi.upm.es/docencia/Estructura/U_Control/

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 41 -

Page 44: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

12 APÉNDICE

A continuación se incluyen algunas figuras de interés para la realización de la práctica. La figura 23representa el cronograma detallado correspondiente al ciclo de fetch de las figuras 18, 19 y 22. Lasfiguras 24 y 25 muestran de forma compacta la estructura interna de la máquina simulada. Por último,se proporciona una hoja que, a modo de resumen, contiene las tablas más importantes para realizar lacodificación.

(*) selcond

(*) invcond

cond

(*) ssmi

nuevo mPC

(*) selrp

ldADDR

ADDR

(*) incrp

PC

(*) actext

(*) mem_io

(*) R_W

MEMR

READY

DATA

IR

(*)_IDB

(*)IDB_

mPC 003 004 004 004 005

TRUE READY READY READY TRUE

not not not not

FALSEnot READY not READY

not READYTRUE

004 004 004 005 IR * 8

PC - - - -

PC PC PC PCPC

PC PC+1 PC+1 PC+1 PC+1PC+1

instrucción

indeterminado indeterminado instrucción

XX DATA DATA DATA XX

se pierde IR IR IR se pierde

inestable

instrucción anterior

O2

Tw Tw T2

T3

T1

O1

Figura 23.- Ciclo de lectura detallado.

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 42 -

Page 45: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

TM

PA

CT

88

88

dalt

[1]..

[8]

IDB

_ =

3ID

B_

= 2

O2

O2

AID

B_

= 1

O2

DI

O2

ldD

I

DA

Am

ux2:

1

10

FLA

G[8

]A

[8]

mux

2:1

10

FLA

G[8

]A

[1]

CY

_A

mux

8:1

7

6

5

4

3

2

1

0

88

8

corr

88

88

8

FLA

G[4

]

FLA

G[8

]

8ID

BIn

tern

alD

ata

Bus

8

TM

P1

mux

2:1

10

77

7

IDB

[1, 2

, 3, 4

, 6, 7

, 8]m

ux2:

1

10

55

S, Z

, V, A

c, PF

LAG

[1, 2

, 3, 4

, 6]

mod

F

5

IDB

_ =

4

FLA

GO

2

7

Cy

_ID

B=

1

TM

P_0

invT

MP

8

A1

mux4:1

0 1 2 3

2se

lN

"F"

"T"

FLA

G[7

]

SZ

VA

cP

NC

y1

23

45

67

8

FLA

G

3se

lCY

mux8:1

"F"

"T"

FLA

G[8

]

0 1 2 3 4 5 6 7

A[1

]

A[8

]

Σ8

bits

Cou

t C6

Ac

V

FLA

G[8

] selC

inin

vCin

0

1

2

3

mux

4:1

8

8

3

8

11 1

S Z P

_ID

B=

0

8

2

opA

LU

selA

Cin

N

ESTADO

CIE

RT

O

"S"

= F

LAG

[1]

"Z"

= F

LAG

[2]

"P"

= F

LAG

[6]

"Cy"

= F

LAG

[8]

RE

AD

Y

"V"

= F

LAG

[3]

"N"

= F

LAG

[7]

[1]

[8]

[7]

[6]

[5]

[4]

[3]

[2]

0 7654321

mux8:1

O1

selc

ond

invc

ond

cond

mux

2:1

10

3

IRO

2

IDB

_ =

7

8 8

Σ11

bits

11 11

mux

2:1

01

11

11

O2

save

cond

ssm

iO

1

cond

ssm

iμP

push

pop

11+ 1

mP

CO

1

1111

11

3

2

1

0

mux

4:1

"0"

11

dalt

1111

4011

mdi

r

mem

oria

PR

OM

2048

x40

mic

roin

stru

cció

nO

1

"001

"

ssm

i

RE

SE

T

DA

TAID

B_

= 6

O2

88

ME

MW

IOW

8bu

sde

dato

sD

ATA

_ID

B=

3

88

3

dalt_

R

8

Figura 24.- P8080E (1 de 2).

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 43 -

Page 46: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

mux

2:1

10

IDB

16 (

L)

mux

2:1

10

IDB

16 (

H) H_L

mux4:1

0 1 2 3

2op

16

_ID

B=

2

8

mux

2:1

01

IDB

_=

5

mux

2:1

10

O2

-1

+1

16

ADDR O2

ldA

DD

R

16

8

88

IDB

16

IDB

16(H

)ID

B16

(L)

H_L

16

16

16

16

88

8

16

bus

dedi

recc

ione

s

8

IDB

8ID

B

IDB

161 selrp

REGS

0 1 2 3 4 5 6 7

WZ

BC

DE

HL

SP

PC

UV

--

3se

lrp

WZ

BC

DE

HL

SP

PC

UV

J K

Q

DQ

J K

Q

J K

Q

J K

Q

R_W

mem

_io

acte

xt

ME

MR

ME

MW

IOR

IOW

HA

LT(f

ig. 1

)

RE

SE

T

ES

TAD

O[6

]O

2

halt

Figura 25.- P8080E (2 de 2).

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 44 -

Page 47: ESTRUCTURA DE COMPUTADORES Práctica de … · El sistema completo simulado (fig. 1) incluye, además del P8080E, una memoria de 32kx8 (32768 ... orden de presentación de la organización

SelA A1

012345

AA/2A*2DAAACTTMP

6 DI7 -

op16 IDB16

- decrp- incrp

se conserva el contenido de rpse decrementa en 1se incrementa en 1se toma el contenido del registro ADDR

0123

TMP_0 invTMP TMP1

0101

00000000 = cero11111111 = -1 (comp. a 2)TMP para sumarnot TMP para restar

0011

selCin invCin Cin

01CYnot CY

0101

0011

para ADDpara SUBpara ADCpara SBB

opALU ALU

0123

A1 + TMP1 + CinA1 and TMP1A1 or TMP1A1 xor TMP1

sumas y restas

selCY CY

puesta a 0puesta a 1acarreo de salida del sumadoridem negado, para restasbit más a la izquierda del acumulador Abit más a la derecha del acumulador Aantiguo CYantiguo CY negado

FTC7not C7A[1]A[8]FLAG[8]not FLAG[8]

01234567

selcond

incondicionalsigno (S)cero (Z)paridad (P)acarreo (CY)señal exterioroverflow (V)nivel de ejecución (N)

TRUEFLAG[1]FLAG[2]FLAG[6]FLAG[8]READYFLAG[3]FLAG[7]

01234567

cond ssmi microdirección

la siguiente, mPC+1la reservada en el registro P(RET)μla indicada en el campo dalt (bits 1 .. 11)IR * 8

0101

0011

actext mem_io R_W se activa:

MEMRMEMWIORIOWninguna

11110

1100x

1010x

selN

Puesta a 0Puesta a 1Antiguo NAntiguo N negado

FTFlag [7]not Flag[7]

0123

defecto X X X X X 0 X 0 X X 0 1 1 0 0 X X 0 0 0 1 1 1 0 0 X 0 1 0 0 0 0 0 1 0 0 0 X X 0

bit nº 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

selA

CY

_A

TM

P_0

invT

MP

selC

in

invC

in

opA

LU

ldD

I

selC

Y

mod

F

_ID

B

IDB

_

selrp

op16

H_L

ldA

DD

R

selN

dalt_

R

selc

ond

invc

ond

ssm

i

save

acte

xtm

em_I

O

R_W

HA

LT

dalt

_IDB fuente

0123

ALUFLAGREGSDATA

IDB_

01234567

a ninguna parteAACTTMPFLAGREGSDATAIR

destino

FLAG [8] A [8]SelA = 1CY_A = 1

desplazamientoa la derecha

A [8] A [8]SelA = 1CY_A = 0

rotacióna la derecha

A [1] FLAG [8]SelA = 2CY_A = 1

desplazamientoa la izquierda

A [1] A [1]SelA = 2CY_A = 0

rotacióna la izquierda

selrp REGS

01234567

WZBCDEHLSPPCUV--

DATSI. Facultad de Informática. UPM. PRÁCTICA DE MICROPROGRAMACIÓN

- 45 -