Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual Simulador de Simples
Manual Simulador de Simples
Simulador de Smplez
Revisin 1.0
Contenidos
Prefacio...............................................................................................................................7
Usuarios de este manual..................................................................................................7
Requerimientos mnimos.................................................................................................8
Instalacin.......................................................................................................................8
Organizacin del manual ................................................................................................9
Convenciones tipogrficas...............................................................................................9
Bibliografa...................................................................................................................10
1. El entorno de simulacin...............................................................................................11
1.1 Ventanas del Simulador...........................................................................................12
Simulador de Smplez...............................................................................................12
Barra de Mens....................................................................................................13
Barras de Herramientas........................................................................................15
rea de estado de ejecucin.................................................................................16
rea de monitorizacin........................................................................................17
Ruta de Datos...........................................................................................................18
Secuenciador............................................................................................................20
Pantalla y Teclado....................................................................................................24
Editor de programas.................................................................................................25
Editor de Microprogramas........................................................................................27
Dilogos Modales.....................................................................................................28
Ventanas de manejo de ficheros................................................................................29
1.2 Flexibilidad.............................................................................................................30
2. Introduccin de un programa.........................................................................................31
2.1 Editor de programas................................................................................................31
2.2 Tablas de Memoria..................................................................................................32
2.3 Volcado de Memoria...............................................................................................36
2.4 Nuevo programa......................................................................................................36
3
Manual de Usuario
3. Ejecucin de un programa........................................................................................37
3.1 Controles...........................................................................................................38
Modos de ejecucin.............................................................................................41
Paso a paso.....................................................................................................42
Continuo.........................................................................................................42
Continuo hasta................................................................................................42
3.2 rea de informacin..........................................................................................42
Informacin de ejecucin....................................................................................43
Informacin de estado.........................................................................................43
3.3 Reseteo del Hardware........................................................................................45
4. Ruta de Datos...........................................................................................................47
4.1 Secuenciador......................................................................................................48
4.2 Micrordenes.....................................................................................................49
4.3 Unidad AritmticoLgica................................................................................50
4.4 Biestables...........................................................................................................51
4.5 Buses.................................................................................................................54
4.6 Memoria Principal.............................................................................................55
Restricciones temporales.....................................................................................57
4.7 Dispositivos perifricos......................................................................................59
Controlador de Teclado.......................................................................................60
Controlador de Pantalla.......................................................................................61
4.8 Circuitos Combinacionales................................................................................63
4.9 Memoria de Control...........................................................................................65
4.10 Seal de Reloj..................................................................................................67
4.11 Controles.........................................................................................................68
4.12 Funcionamiento conjunto.................................................................................68
5. Cronogramas............................................................................................................75
5.1 Representacin de las seales.............................................................................76
Micrordenes......................................................................................................77
Buses...................................................................................................................78
5.2 Cronogramas de las instrucciones.....................................................................80
Estado I0.............................................................................................................81
Instruccin ST.....................................................................................................82
Instruccin LD....................................................................................................84
Instruccin ADD.................................................................................................85
Instruccin BR....................................................................................................86
Instruccin BZ....................................................................................................87
Instruccin CLR..................................................................................................90
Instruccin DEC..................................................................................................91
Instruccin HALT...............................................................................................92
6. Entrada y salida........................................................................................................93
6.1 Puertos...............................................................................................................94
6.2 Representacin de los caracteres........................................................................96
Contenidos
7. Herramientas..........................................................................................................101
7.1 Editor de programas.........................................................................................101
Operaciones de manejo de texto........................................................................107
Lenguaje ensamblador.......................................................................................108
Sintaxis del lenguaje ensamblador................................................................108
Etiquetas.......................................................................................................109
Instrucciones.................................................................................................110
Seudoinstrucciones.......................................................................................111
Directivas.....................................................................................................113
Comentarios.................................................................................................115
Aritmtica de etiquetas y direcciones............................................................115
Ensamblado y ejecucin de programas..............................................................117
7.2 Editor de Microprogramas...............................................................................120
8. Programacin de Smplez.......................................................................................125
8.1 Niveles de abstraccin.....................................................................................125
8.2 Cdigo nemnico.............................................................................................126
8.3 Modelo Funcional de Smplez..........................................................................126
Convenios para la representacin de la informacin..........................................127
Nmeros.......................................................................................................127
Caracteres.....................................................................................................128
Instrucciones.................................................................................................128
Repertorio de Instrucciones...............................................................................128
8.4 Almacenado de Programas...............................................................................129
8.5 Programacin utilizando las tablas de memoria................................................130
8.6 Programacin a travs del editorensamblador................................................140
9. Microprogramacin de Smplez..............................................................................147
9.1 Conceptos tericos...........................................................................................147
9.2 Implementacin...............................................................................................151
Final de instruccin...........................................................................................151
Instruccin en curso..........................................................................................151
9.3 Microprogramacin..........................................................................................152
Manual de Usuario
Prefacio
Manual de Usuario
Requerimientos mnimos
Como requisito previo a la instalacin y utilizacin del simulador, es necesario
tener disponible en el sistema el conjunto de herramientas JDK, con una versin igual o
superior a la 1.2. ste se puede obtener de la URL:
http://java.sun.com
Una vez instalado el jdk se tendr un directorio:
c:\jdk1.2\bin
en el caso de Windows 95/98/NT, y algo parecido a:
/usr/java1.2/bin
en el caso de Unix/Linux.
Para independizar las explicaciones respecto a la plataforma, se utilizar
$JAVAHOME para referirse a estos directorios.
En el Manual, para hablar de directorios, se usar la terminologa de Unix, por lo
que la barra inclinada utilizada para separarlos ser el carcter /. En el caso de
Windows se debe utilizar \.
El simulador se ejecuta adecuadamente en un Pentium 133 Mhz con 32 Mb de
memoria, pero es aconsejable utilizar uno de velocidad superior y 64 Mb de memoria.
Para un correcto funcionamiento de ventanas como la de Pantalla y Teclado, se
recomienda tener instalados los diferentes tamaos de letra de la fuente Courier.
Instalacin
El simulador se encuentra empaquetado en un nico fichero. El compresor
utilizado es el comando jar, incluido entre las herramientas de la mquina virtual de
Java, y que utiliza el formato zip. Dicho fichero tendr extensin jar:
simulador.jar
El primer paso para instalarlo consiste en desempaquetar el directorio de
imgenes dentro del directorio de instalacin, para lo cual se ejecutar desde lnea de
comandos:
$JAVAHOME/jar xvf simulador.jar Imagenes
Prefacio
Convenciones tipogrficas
En la Tabla 1 se describen las convenciones tipogrficas utilizadas en este Manual.
Tipo de letra
abdefg12345
Significado
"abcdefg12345"
Referencias
Cuando haya que indicar algo importante se resaltar como una nota con el
siguiente formato:
Nota Esto es algo importante a destacar.
10
Manual de Usuario
Bibliografa
[Fernndez,98] Conceptos bsicos de arquitectura y sistemas operativos. Curso de
Ordenadores. (2da edicin) Ed. Syserso. Madrid 1998.
[PattersonHennessy,95] Organizacin y diseo de computadores. La interfaz
hardware/software. (2da edicin) Ed. McGrawHill. Espaa 1995.
Captulo 1
El entorno de simulacin
El simulador permite escribir y ejecutar programas de Smplez a nivel de mquina
convencional. Para escribirlos se pueden introducir directamente en memoria,
utilizando lenguaje mquina, o utilizar el editor desarrollado por Francisco Javier
Rodrguez incluido en el simulador, utilizando lenguaje ensamblador.
Incluye un editor de Memorias de Control, de manera que es posible
microprogramar el secuenciador de Smplez. Es decir, es posible programar a nivel de
micromquina y modificar el repertorio de instrucciones de Smplez. A este nivel
controlamos el comportamiento de los elementos hardware de la mquina y decidimos
qu queremos que hagan y cundo. La microprogramacin no siempre es sencilla y
puede acarrear conflictos entre los diferentes elementos. Todos estos conceptos se
explican en la segunda parte de [Fernndez,98], y para el caso concreto de Smplez en
la leccin 11.
Para facilitar la comprensin de los conceptos de microprogramacin la
herramienta incluye un simulador grfico, que permite seguir la ejecucin a nivel de
Ruta de Datos, y un generador de cronogramas, que permite ver cmo evolucionan las
seales a lo largo del tiempo.
Para interactuar con el usuario el simulador proporciona la pantalla y el teclado de
Smplez
En este captulo se describe cada uno de estos mdulos y sus diferentes
componentes.
11
12
Manual de Usuario
Simulador de Smplez
Es la ventana principal del simulador y desde la cual se puede acceder a toda su
funcionalidad se muestra en la Figura 1.
13
Barra de Mens
La barra de mens se muestra en la Figura 2.
14
Manual de Usuario
Men de Herramientas
Ayuda
permite
escribir
15
Barras de Herramientas
En primer trmino se encuentran las barras de herramientas, mostradas en la
Figura 6, desde las que se puede controlar la ejecucin de la simulacin y abrir el resto
de mdulos que componen el Simulador.
16
Manual de Usuario
17
rea de monitorizacin
Por ltimo se encuentra el rea de Monitorizacin del Sistema, compuesta por dos
solapas y mostrada en la Figura 9:
18
Manual de Usuario
Ruta de Datos
Esta ventana muestra la Ruta de Datos de Smplez. Para abrirla basta con pulsar el
botn indicado en el apartado que describe la barra de herramientas de la ventana
principal del simulador. El botn cambia de aspecto permitiendo saber si la ventana est
abierta o cerrada.
19
Retroceso.
Pausa y continuacin.
Seleccin de formato numrico.
Abrir/cerrar la ventana de los Secuenciadores.
20
Manual de Usuario
Secuenciador
Esta ventana muestra los diferentes estados del secuenciador durante la ejecucin
de una instruccin. Es accesible a travs del botn del rea de control de la ventana de
la Ruta de Datos.
El tipo de secuenciador mostrado depende de si la Memoria de Control escogida a
travs del selector de la ventana principal es cableada o microprogramada. De
acuerdo a estos dos valores, los dos aspectos posibles de la ventana del Secuenciador se
muestran en la Figura 13 y en la Figura 14.
Esta ventana depende de la de la Ruta de Datos. Si se cierra esta ltima, la
ventana del Secuenciador tambin se oculta.
21
22
Manual de Usuario
Cronogramas
En esta ventana se muestran secciones de los cronogramas correspondientes a la
ejecucin de una instruccin. Para abrirla basta con pulsar el botn indicado en el
apartado que describe la barra de herramientas de la ventana principal del simulador. El
botn cambia de aspecto permitiendo saber si la ventana est abierta. Para entender a
fondo el significado de los cronogramas consultar el Captulo 5.
23
24
Manual de Usuario
Pantalla y Teclado
Pulsando en el botn correspondiente de la barra de herramientas de la ventana
principal se abre la ventana mostrada en la Figura 17. El botn cambia de aspecto
indicando que la ventana est abierta.
25
Editor de programas
Esta ventana contiene el editor de programas de Smplez. Para abrirla seleccionar
la entrada Editor de programas del men de Herramientas.
26
Manual de Usuario
27
Editor de Microprogramas
Esta ventana es accesible a travs de la entrada Editor de Microprogramas del
men de Herramientas de la barra de mens.
28
Manual de Usuario
La ventana est formada por la barra de control mostrada en la Figura 21, situada
en la parte superior, y el editor de la Memoria en la parte inferior.
Dilogos Modales
Con determinadas operaciones o ante ciertas situaciones se abre otro tipo de
ventana, los Dilogos Modales. Son pequeas ventanas de informacin, llamadas
modales porque bloquean la entrada de usuario al resto de ventanas del simulador. A
continuacin se muestran los tres tipos de dilogos modales.
29
30
Manual de Usuario
1.2 Flexibilidad
La interfaz grfica del simulador se ha diseado tratando de conseguir la mayor
flexibilidad y sencillez de manejo posibles. Entre los objetivos de diseo estaban el que
pudiera ser utilizada en monitores de cualquier tamao, que el usuario pudiera
acomodarla a su gusto y que fuera fcil e intuitiva de utilizar.
Teniendo en cuenta estas premisas, la aplicacin se dividi, siguiendo un criterio
funcional, en las ventanas descritas a lo largo de este captulo, de manera que en todo
momento se pudiera tener abierto slo lo que se va a utilizar.
La ventana principal permite ocultar el rea de monitorizacin, ocupando as
menos espacio.
En algunos casos puede que esto no sea suficiente. Por ejemplo, si se quiere
trabajar con la Ruta de Datos la ventana principal no es necesaria y sera preferible
poder iconizarla. Pero en ese caso las barras de control de ejecucin quedara ocultas.
Para solucionar esto, estas barras se pueden desglosar del resto de la ventana pinchando
en la zona punteada de las mismas y arrastrndolas fuera.
Otras caractersticas de la interfaz grfica son:
Textos de ayuda al situar el cursor del ratn sobre los elementos que
componen la interfaz.
Captulo 2
Introduccin de un programa
En este captulo se describe cmo introducir un programa en la memoria de
Smplez. Se pueden seguir varios mtodos que explicarn de manera detallada.
32
Manual de Usuario
LD
ADD
BR
BZ
CLR
DEC
HALT
33
Comentarios
Para editar una determinada posicin de memoria basta con posicionar el ratn
sobre la misma y pinchar. Tal y como se muestra en la Figura 27, la celda cambia de
aspecto y entra en modo de edicin. nicamente hay que tener en cuenta el formato de
la columna que se ha escogido para introducir el valor. Una vez que se haya terminado
de introducir el valor, si se pulsa Enter se pasa a editar la siguiente posicin de
memoria. Para salir del modo edicin basta con pulsar el ratn fuera de la tabla.
34
Manual de Usuario
Por ltimo, para introducir los datos a sumar en las posiciones [10] y [11] se
puede hacer a travs de la tabla de Memoria utilizando el formato decimal. Suponiendo
que los valores a sumar son el 3 y el 8, se pulsaran respectivamente las posiciones de
memoria [10] y [11] de la columna "Contenido" de la Tabla de Memoria tal y como
muestra la Figura 28.
35
Como se habr podido observar al introducir valores en una celda determinada las
celdas homlogas de las columnas de ambas tablas cambian tambin su contenido
adecundolo al nuevo valor introducido, tal y como se indic con anterioridad.
El contenido final de la memoria ser el siguiente:
36
Manual de Usuario
Captulo 3
Ejecucin de un programa
Los programas escritos para Smplez no pueden ejecutarse directamente sobre
ninguna computadora, dado que el repertorio y formato de sus instrucciones, totalmente
dependientes del modelo estructural y funcional subyacente, y el tipo de datos
manejados seguramente no coincida con el de la mquina en cuestin. Y dado que an
no se ha implementado la versin hardware de Smplez, es necesaria la utilizacin de un
simulador para su ejecucin. La gran ventaja de un simulador es el control que permite
tener sobre la ejecucin de un programa, pudiendo llegar a hacerse cosas imposibles
con la mquina real o slo posibles con un debugger de cdigo mquina. Como por
ejemplo la modificacin de los registros del sistema a mano, cambiar la posicin de
ejecucin o poder deshacer los efectos de una instruccin ya ejecutada.
Este simulador en concreto nos permite adems ejecutar programas escritos para
Smplez sobre cualquier mquina para la que se haya desarrollado una mquina virtual
Java.
Se pueden distinguir dos tipos de simulacin; la simulacin de la ejecucin de las
instrucciones y la simulacin grfica de la Ruta de Datos y los cronogramas.
Los principales elementos para controlar la ejecucin de un programa en el
simulador son las barras de herramientas y las reas de informacin y monitorizacin.
Con las barras de herramientas se puede en todo momento decidir cundo arrancar o
parar la ejecucin, qu debe estar visible en el simulador o qu modo de ejecucin
utilizar. Las reas de informacin y monitorizacin permiten conocer cul es el estado
actual de la mquina y saber qu est pasando en todo momento.
El control de la simulacin grfica se realiza a travs del panel de controles
situado en la ventana de la Ruta de Datos.
37
38
Manual de Usuario
3.1 Controles
El simulador tiene dos barras de herramientas en la ventana principal y un rea de
control en la ventana de la Ruta de Datos, que permiten controlar la ejecucin de
programas.
La primera barra de herramientas, Figura 30, se encuentra inicialmente a la
izquierda de la ventana principal, contiene los botones de arranque, parada y
deshacer.
Segn los botones que estn habilitados en un momento dado se puede saber si la
simulacin est en marcha, botn de parada habilitado, o no, botn de arranque
habilitado. Inicialmente el nico botn habilitado es el de arranque.
Para comenzar la ejecucin de un programa basta con pulsar el botn de
arranque. Las tablas de memoria y de registros no pueden estar en edicin en ese
instante. Si una de ellas se encuentra en dicho estado el simulador mostrar un mensaje
indicando que se termine la edicin antes de comenzar a ejecutar.
Se puede interrumpir la ejecucin de un programa en cualquier momento
pulsando el botn de parada. La instruccin en curso se interrumpe y la mquina pasa al
estado que tena antes del anterior al comienzo de la misma.
Se puede deshacer la ejecucin de hasta un total de 10 instrucciones,
independientemente del modo de ejecucin utilizado. Sin embargo cuando se cargue un
nuevo programa en memoria, la informacin sobre las instrucciones ya ejecutadas
pertenecientes al programa actualmente en memoria se perder y no ser posible
deshacerlas. Ya que se ha producido un reseteo del hardware de la mquina. En la
pgina 45 se explica qu significa el reseteo. Cuando se edita el contenido del Contador
de Programas, tambin se resetea y no es posible deshacer la ejecucin de las ltimas
instrucciones. En ambas situaciones el botn de deshacer pasa a estar deshabilitado.
Con la posibilidad de deshacer la ejecucin de instruccin se pueden comparar los
resultados de una instruccin con diferentes microprogramas y la implementacin
cableada. Esto permite entender perfectamente los efectos de una decisin de diseo.
39
40
Manual de Usuario
41
Modos de ejecucin
Un modo de ejecucin es la manera que tiene el simulador de estructurar la
ejecucin de las instrucciones que componen un programa. El simulador utiliza tres
modos de ejecucin, seleccionables mediante el men desplegable, mostrado en la
Figura 33, situado en una de las barras de herramientas.
42
Manual de Usuario
Paso a paso
Este modo de ejecucin permite ir ejecutando una a una las instrucciones del
programa. Cuando la instruccin en curso finaliza, el simulador detiene la ejecucin.
Esta manera de simular se suele denominar depuracin.
Continuo
ste es el modo de ejecucin clsico. El simulador ejecuta una instruccin tras
otra hasta que encuentra una instruccin HALT, tras la cual se detiene.
Continuo hasta
En este modo de ejecucin el simulador ejecuta tantas instrucciones seguidas
como indique el campo numrico situado a la izquierda del selector, hecho lo cual se
detiene. En el caso de encontrar una instruccin HALT la ejecucin de detiene
igualmente antes de completar dicho nmero.
El campo numrico slo est habilitado cuando el modo de ejecucin
seleccionado sea Continuo hasta. El nmero mximo de instrucciones ejecutables en
este modo son 99.
43
Informacin de ejecucin
El campo Programa en ejecucin indica el nombre del programa cargado en
memoria. Su valor se actualiza al salvar a disco, momento en que se solicita un nombre
para el programa que se va a guardar, y cuando se carga un programa desde un fichero.
El campo En curso indica la instruccin en ejecucin. Cuando finaliza la
ejecucin mantiene la informacin de la ltima ejecutada. Cuando se interrumpe o se
deshace la ejecucin de una instruccin el campo pasa a estar vaco.
El campo Ejecutadas muestra el nmero de instrucciones ejecutadas desde el
ltimo reseteo de la mquina. Al deshacer la ejecucin de una instruccin su valor se
decrementa.
Informacin de estado
El campo Memoria de Control permite seleccionar la memoria de control que
utilizar el secuenciador. Cuando se seleccione la cableada realmente se estar
refiriendo a los circuitos combinaciones que forman el secuenciador cableado. La
Memoria de Control microprogramada es la implementada por defecto en el sistema,
cuyo contenido se muestra en el Captulo 9. A medida que se carguen Memorias de
Control desde fichero, utilizando la entrada del men de Archivo o pulsando
CONTROL+M, se irn aadiendo al desplegable. Cuando se carga una memoria de
control con el nombre CABLEADA o PROGRAMADA al nombre se le aade un sufijo
para distinguirlas de las memorias por defecto. Cuando se carga una con el mismo
nombre que una ya cargada se sustituye esta ltima.
Al seleccionar un secuenciador aparece un mensaje en el rea de Monitorizacin.
Esto permite comprobar con qu Memoria de Control se han estado ejecutando las
instrucciones.
Cuando se cambie el tipo de secuenciador, los controles de la Ruta de Datos que
permiten modificar la posicin de la simulacin grfica se deshabilitan. De lo contrario,
cambiando la posicin de ejecucin no slo se vera la ejecucin generada por otro
secuenciador sino que incluso se podra estar mostrando la informacin con una Ruta de
Datos incorrecta. La manera de volver a visualizar la instruccin con un determinado
secuenciador es volver a seleccionarlo, deshacer la ejecucin de la instruccin y volver
a ejecutarla.
44
Manual de Usuario
45
46
Manual de Usuario
Captulo 4
Ruta de Datos
Segn la definicin dada en [Fernndez,98], Una ruta de datos es una
estructura constituida por un conjunto de elementos (buses, registros y circuitos
combinacionales) interconectados, cuyas funciones son transferir, memorizar y
procesar las informaciones (instrucciones, direcciones y operandos) procedentes de (o
con destino a) la MP y los dispositivos perifricos.
La Ruta de Datos de Smplez se muestra en la Figura 35.
47
48
Manual de Usuario
4.1 Secuenciador
Un sistema que genera en cada momento las micrordenes oportunas (seales
binarias) para que lleven a cabo los procesos en la ruta de datos. El secuenciador de
Smplez se muestra en la Figura 36.
Figura 36:
Secuenciador.
49
4.2 Micrordenes
Las micrordenes son seales binarias que conectan al secuenciador con los
diferentes elementos que componen la Ruta de Datos. Las lista de micrordenes se
muestra en la Tabla 2.
Nombre Efecto
eac
eri
incp
ecp
ccp
era
pac
sum
tra2
dec1
lec
esc
sac
sri
Salida de los nueve bits de menor peso del registro de instrucciones al bus
Ai
scp
cbf
sco
bbz
ebi
50
Manual de Usuario
Cuando una microorden est activa aparece resaltada en color, tal y como se
muestra en la Figura 37, el resto del tiempo se pintarn en negro.
Figura 37:
Microorden activa.
La UAL tiene dos entradas, cada una de ellas de 12 bits, y genera dos salidas, una
de 12 bits al acumulador, que depender del tipo de operacin seleccionada, y una
salida binaria al biestable Z, que depende de si el resultado de la ltima operacin fue
cero o no. Las operaciones posibles son:
51
4.4 Biestables
El biestable es un circuito con memoria, de dos estados posibles segn el valor
que contenga. En la Ruta de Datos los biestables se representan como en la Figura 40
cuando contengan un 0.
Figura 40:
Biestable con "0".
Figura 41:
Biestable con "1".
52
Manual de Usuario
En el caso del secuenciador cableado hay tres biestables ms. Dichos biestables
son sncronos, es decir sus variaciones de estado estn marcadas por la seal de reloj.
En concreto los biestables F y T estn sincronizados por flanco de subida y el biestable
I por flanco de bajada.
Registros
Un registro no es ms que un conjunto de biestables con una entrada de control
comn. Al utilizar un registro haremos abstraccin del tipo de sus biestables
componentes y de los registros lgicos asociados. Slo nos interesa saber que es un
registro de carga en paralelo, que mantiene un estado de n bits a su salida mientras
no se den ciertas condiciones en sus entradas, y que cuando estas condiciones se dan su
estado queda sustituido por los valores de las n entradas. S ser importante indicar si
es de tipo cerrojo, o sincronizado por flancos de subida, o sincronizado por flancos de
bajada.
En la Ruta de Datos de Smplez hay dos tipos de registros, de cerrojo positivo y
sincronizados por flanco de bajada. En la Figura 42 se muestra un registro sincronizado
por flanco de bajada.
53
Figura 43:
Registro de
tipo cerrojo.
En un registro de este tipo la salida toma el valor que tenga la entrada, y seguir
cualquier cambio que se produzca en sta durante todo el tiempo en que la microorden
est activa y la seal de reloj valga "1". Se utiliza un registro de este tipo para RA, de
manera que la direccin de acceso a memoria o puerto de entrada/salida se estabilice en
el bus Ai antes de pedir un ciclo de memoria.
Los registros se considerarn activos cuando alguna de sus micrordenes de
control est activa y cambiarn de aspecto, tal y como se muestra en la Figura 44.
Figura 45: CD
activo.
54
Manual de Usuario
4.5 Buses
La interconexin se hace a travs de unas vas o canales, que en adelante
llamaremos buses, a los que pueden tener acceso varias unidades. Fsicamente un
bus es un conjunto de lneas binarias.
La Ruta de Datos de Smplez tiene cuatro buses:
55
El caso del bus A es un poco especial. Dado que toma su valor del registro RA, y
ste nunca tiene sus salidas en alta impedancia, siempre se estar volcando el contenido
del registro en el bus. Esto hace que los nicos momentos en que el bus no aparezca
iluminado sean durante las basculaciones de valores debido a un cambio de contenido
del registro RA.
Las lneas de interconexin entre los buses y los elementos de la Ruta de Datos
siguen el siguiente criterio. Las que son de entrada a algn elemento se iluminan con el
estado del bus. Las que son de salida desde un elemento hacia el bus slo se iluminan
cuando se est volcando un valor sobre el mismo. Cuando se trata de una puerta lgica
controlada por una microorden se iluminar cuando esta ltima est activa, tal y como
muestra la Figura 48.
Los buses no tienen "memoria", de manera que cuando se deja de volcar un valor
sobre un bus, y pasa a alta impedancia, una operacin de lectura sobre l genera un
valor imprevisible.
En un momento dado solamente un componente debera estar depositando su
informacin en el bus, de los contrario se producira una colisin en el mismo y el valor
contenido por el bus no tendra ninguna utilidad. Por el contrario varios elementos
pueden leer al mismo tiempo la informacin contenida en l.
56
Manual de Usuario
Figura 49:
Memoria
Principal.
Figura 50:
Operacin
sobre la MP.
57
Figura 51:
Final del ciclo
de memoria.
Restricciones temporales
Es importante entender las restricciones temporales a las que est sujeta la
memoria, pues el no respetarlas significa un comportamiento incorrecto de sta. Esto es
especialmente importante cuando se est microprogramando el secuenciador. Hay dos
parmetros temporales bsicos: el tiempo de acceso y el ciclo de memoria.
El tiempo de acceso para escritura es el que transcurre desde que se le pide a la
memoria con esc que escriba el contenido del bus D en una palabra hasta que este
contenido queda definitivamente escrito.
El tiempo de acceso para lectura es el tiempo que transcurre desde que se le da
la direccin y la orden de lectura lec a la memoria, hasta que se puede disponer del
contenido de la palabra de dicha direccin en la salida.
Tras una operacin sobre la memoria no siempre se puede iniciar inmediatamente
otra. El ciclo de memoria es el tiempo que debe transcurrir para poder iniciar una
nueva operacin desde que se inici la anterior.
En una memoria de lectura y escritura, como es el caso de la de Smplez, ambos
tiempos se pueden suponer iguales. En Smplez el tiempo de acceso se supone de 100
ns y el ciclo de memoria de 200 ns.
58
Manual de Usuario
Adems hay que tener en cuenta un aspecto ms. Es necesario mantener estable la
direccin de la posicin de memoria, de donde se lee o a donde se escribe, desde un
poco antes de que empiece el ciclo de reloj donde se realiza la operacin y hasta un
poco despus de terminar el acceso. Esto se debe a que los circuitos descodificadores
necesitan un tiempo para direccionar la pocin en cuestin. Este tiempo es menor a un
semiciclo de reloj.
Por ltimo, en la memoria de Smplez no es necesario esperar cada cierto tiempo
un tiempo de refresco entre operaciones. Lo que permite comenzar una nueva operacin
en cuanto termina el ciclo de memoria de la anterior.
Teniendo en cuenta estos aspectos temporales, las diferentes situaciones que se
pueden dar en el simulador si no se respetan son:
Puede parecer que el segundo caso es imposible debido a que lec y esc
permanecen constantes entre flancos de reloj. Hay que tener en cuenta que la memoria
es un elemento asncrono y que en cuanto detecta una direccin de su rango y una
microorden activa se pone a trabajar, y en casos de microprogramaciones incorrectas se
podra producir una de las situaciones descritas. As para el segundo caso podra pasar
que con lec o esc activas y direccionando los puertos de entrada y salida, en mitad del
ciclo de reloj cambia la direccin en el bus Ai debido a que era se activa, y la nueva
direccin cargada en RA pasa a pertenecer al rango de memoria. En ese momento la
MP lo detecta y comienza a trabajar. Llegados al final del ciclo de reloj sus circuitos
descodificadores ya apuntan a la posicin en cuestin, pero en ese momento la
microorden activa hasta ese momento pasa a valer 0.
59
Como se puede observar se ha pretendido tener en cuenta todos los posibles casos
que se pueden dar en la Ruta de Datos. El simulador permite comprobar los efectos
catastrficos sobre el sistema de una mala microprogramacin.
60
Manual de Usuario
Controlador de Teclado
Los puertos de control y datos del controlador de teclado tienen las direcciones
510 y 511 del mapa de memoria respectivamente.
Cuando se accede a ellos para lectura se iluminan mientras est activa la
microorden lec. La Figura 53 muestra el aspecto del puerto de control cuando se ejecuta
la instruccin LD /510.
Figura 53:
Puerto de
control activo.
Figura 54:
Puertos tras
pulsar una tecla.
61
Controlador de Pantalla
Los puertos de control y datos del controlador de pantalla se corresponden con las
direcciones 510 y 511 respectivamente.
El aspecto que tienen los puertos cuando se realiza sobre ellos una operacin es
semejante al de los puertos del controlador de Teclado. Sobre los puertos de este
controlador se pueden realizar lecturas o escrituras, excepto en el caso de realizar una
lectura sobre el puerto de datos. En este caso simplemente se descarta la operacin por
los circuitos descodificadores y el controlador no cambia de aspecto.
La escritura sobre el puerto de datos lleva asociados varios estados ms. Las
situaciones posibles se explican a continuacin.
La primera situacin se da cuando no se ha inicializado el puerto de control, la
escritura sobre el puerto de datos ilumina el puerto en la Ruta de Datos mientras est
activa la microorden esc, pero su valor no se actualiza.
La segunda situacin posible se produce en el caso de haber inicializado el puerto
de control, veremos que los estados por lo que pasa el CPAN son los siguientes:
Figura 55:
CPAN durante
O0.
62
Manual de Usuario
Figura 56:
Comienza
ciclo de
pantalla.
Figura 57:
Aspecto
durante el ciclo
de Pantalla.
Por tanto, que est iluminado CPAN significa que hay una operacin de escritura
en pantalla en curso. Que est iluminado alguno de los registros significa que se est
realizando una operacin sobre ellos.
63
Figura 58:
Modificacin del
puerto de
control.
64
Manual de Usuario
Estado
65
66
Manual de Usuario
En el caso del secuenciador cableado eran los biestables I y T, junto con el tipo de
instruccin en curso, los que indicaban a los circuitos combinacionales la siguiente
microinstruccin. Por cuestiones de diseo una instruccin se poda componer como
mximo de cuatro microinstrucciones. En el caso del secuenciador microprogramado
son las propias microinstrucciones las que indican cul es la siguiente microinstruccin.
Ahora podemos programar una instruccin compuesta por ms de cuatro
microinstrucciones.
La activacin de sco marca el comienzo de una nueva instruccin, dado que
cargar un nuevo Cdigo de Operacin. ste es precisamente el criterio utilizado por el
simulador para marcar el final de una instruccin y el comienzo de una nueva.
Hay otra microorden nueva respecto al secuenciador cableado, cbf, que hace la
funcin que haca el biestable F en aquel. Cuando se activa, se inhibe la carga en el
registro RA, y el secuenciador genera indefinidamente las ltimas micrordenes .
67
La Memoria de Control puede presentar uno de los dos aspectos siguientes. Tras
el flanco de bajada de reloj el aspecto es el de la Figura 64.
68
Manual de Usuario
4.11 Controles
En la ventana de la Ruta de Datos se encuentra los controles descritos en el
Captulo 1. Con ellos se puede cambiar el formato numrico de los datos mostrados en
la Ruta de Datos, eligiendo entre octal o decimal.
Se puede detener la ejecucin de la Ruta de Datos en cualquier momento, lo que a
su vez permite cambiar la posicin de la ejecucin, situndola en un momento
determinado que se quiera analizar en detalle. Tambin se puede desplazar la ejecucin
hasta el comienzo de la instruccin. O en el caso de instrucciones que duren muchos
ciclos de reloj, retrasarla hasta el primero almacenado.
Podemos modificar la velocidad de la ejecucin desde la barra de desplazamiento,
acelerndola.
En el caso de estar utilizando el secuenciador microprogramado se puede hacer
que la ejecucin contine a pesar de estar activa la microorden cbf, que de lo contrario
parara la ejecucin.
Por ltimo, desde aqu se puede abrir la parte de la Ruta de Datos correspondiente
al interior del secuenciador.
69
70
Manual de Usuario
71
72
Manual de Usuario
73
Pasados unos instantes la direccin se habr estabilizado en el bus Ai, con lo que
ste se iluminar y con la llegada del flanco de subida de reloj la direccin se cargar en
el registro RA, tal y como muestra la Figura 75. Es la direccin de la siguiente
instruccin a ejecutar.
74
Manual de Usuario
Captulo 5
Cronogramas
Tal y como se explica en [Fernndez,98] Todas las micrordenes estn
sincronizadas con el reloj y permanecen constantes entre dos flancos de bajada. Cada
vez que llega uno el secuenciador cambia de estado, y , con un pequeo retardo
(despreciable con relacin al perodo de reloj), algunas de las micrordenes que
estaban activas desaparecen, otras que no lo estaban aparecen, y otras mantienen su
valor.
Los cronogramas son la representacin temporal de la evolucin de las
micrordenes y buses que forman Smplez. Por tanto permiten seguir esos cambios
indicados en el prrafo anterior y entender cmo influyen unas seales sobre otras. Son
la herramienta complementaria de la Ruta de Datos, ya que permiten entender a fondo
qu est ocurriendo en sta.
En el simulador el cronograma de una instruccin se considera que comienza con
el primer flanco de bajada de reloj de los ciclos que forman la misma, que en el caso del
secuenciador cableado se corresponde con el ciclo comn a todas la instrucciones, I0.
Pero para disponer de una referencia se muestra tambin el valor que tena la seal justo
un instante antes del flanco. Si se seleccionan las seales que se quieren estudiar, se
pulsa el botn de pausa y luego el de ejecucin, se observarn estos valores anteriores al
flanco de bajada, tal y como se muestra en Figura 77.
De manera anloga, el cronograma de una instruccin termina justo antes del
flanco de bajada de reloj del ciclo que se corresponde con el I0 de la siguiente
instruccin. Es importante resaltar por tanto, que el ltimo flanco de bajada no est
incluido, tal y como muestra la Figura 78, y como ya se coment en el Captulo 3.
Estar incluido en el cronograma de la siguiente instruccin.
75
76
Manual de Usuario
Captulo 5. Cronogramas
77
Micrordenes
Las micrordenes tienen dos valores posibles, uno y cero, en terminologa binaria,
o verdadero y falso en booleana. Estos valores se representan en los cronogramas tal y
como se muestra en las figuras siguientes.
Figura 81: 0 a
1.
Figura 82: 1 a 0.
78
Manual de Usuario
Buses
En el caso de los buses, para ser precisos, no se habla de valor sino de estado. El
bus contiene un valor, que es el conjunto de valores de los hilos que lo forman, y se
encuentra en un estado. Es importante resaltar este punto porque uno de los estados en
cuestin es la ausencia de valores.
Los buses se pueden encontrar en uno de los siguientes estados:
Captulo 5. Cronogramas
79
Con valor. Un elemento, y slo uno, est volcando su valor sobre el bus. Una
lectura del bus devuelve dicho valor.
Las transiciones entre estos estados toman, al igual que en el caso de las
micrordenes, un tiempo algo inferior a 15 ns. Las tres posibles transiciones son:
80
Manual de Usuario
Captulo 5. Cronogramas
81
Se utilizarn esta terminologa para explicar cada uno de los cronogramas. Hay
que hacer resaltar que cuando se microprograme el secuenciador estos estados pueden
no existir, tal y como se han definido, y los estados de las instrucciones dependern
totalmente del diseo de la Memoria de Control.
Estado I0
El estado I0, mostrado en la Figura 90, es comn a todas las instrucciones.
82
Manual de Usuario
Instruccin ST
El cronograma de la instruccin ST con el secuenciador cableado es el mostrado
en la Figura 91.
Captulo 5. Cronogramas
83
Tambin durante I1 (R2) se activa sac de manera que ya est estable cuando se
active esc y se cumplan las restricciones temporales de escritura en memoria ya
explicadas en el captulo de la Ruta de Datos. Por la misma razn sac se mantiene
activa durante todo el ciclo de escritura, que ocupa toda la duracin de la instruccin, de
manera que el contenido del acumulador permanece estable en el Bus D.
Al final de I1 (R2) se puede desactivar sri y sac al estar la direccin ya cargada en
el registro RA. El Bus Ai pasa entonces a alta impedancia.
Durante O0 (R3) nicamente se activa esc para indicar a la memoria la operacin
a realizar.
Durante O1 (R4) se activan scp y era para ir preparando la lectura de la
instruccin siguiente. Con scp el contenido del registro CP, previamente incrementado
con incp durante I0, pasa al Bus Ai y con era este valor pasa al registro RA cuando la
seal de reloj pasa a valer 1.
En el cronograma se puede observar como la microorden ebi va cambiando de
valor, de manera que permite ir pasando por los diferentes estados I0, I1, O0 y O1. En
el caso del secuenciador microprogramado esta seal no existe y la nica diferencia es
la aparicin de la microorden sco, mostrada en la Figura 92, la cual permite leer desde
el Bus D el cdigo de instruccin y as poder descodificar de qu instruccin se trata.
84
Manual de Usuario
Instruccin LD
La instruccin LD permite leer un valor desde la memoria y transferirlo al
acumulador. La direccin de memoria de dicho valor est contenida en CD. El
cronograma de esta instruccin es el mostrado en la Figura 93.
Esta instruccin tambin implica un ciclo de operando, por lo que al igual que en
el caso de ST, durante I1 se transfiere el contenido de CD al registro RA mediante las
micrordenes sri y era, de manera que al comienzo de O0 (R3) la direccin de memoria
del operando ya est en el Bus A y puede comenzar su lectura.
Durante O0 (R3) se generan las micrordenes lec, tra2 y eac. La microorden lec
le indica a la memoria que la operacin a realizar es una lectura. Con tra2 le indica a la
UAL que transfiera lo que hay en su entrada 2 a la salida y con eac le indica al registro
AC que actualice su contenido en el siguiente flanco de bajada de reloj con ese valor.
Es decir se ha creado un acceso directo entre el Bus D y el registro AC, de manera que
cuando la memoria deposite el operando en el bus casi al final de O0 (R3) ste se
pueda pasar directamente a AC.
Durante O1 (R4), como en el caso anterior, se prepara la lectura de la instruccin
siguiente mediante las micrordenes era y scp.
Captulo 5. Cronogramas
85
Instruccin ADD
Esta instruccin permite sumar el contenido del acumulador con el contenido de
la palabra de memoria de direccin indicada por CD, para luego dejarlo nuevamente en
el acumulador. Su cronograma, mostrado en la Figura 94, es muy similar al de la
instruccin LD.
86
Manual de Usuario
Instruccin BR
La instruccin BR permite bifurcar incondicionalmente el flujo de ejecucin a la
direccin de indicada en CD. Su cronograma se muestra en la Figura 95.
Captulo 5. Cronogramas
87
Instruccin BZ
Esta instruccin permite bifurcar el flujo de ejecucin a la direccin indicada en
CD si el resultado de la ltima operacin realizada por la UAL ha sido cero, y por tanto
Z contiene un 1. De no haberlo sido no se hace nada y el flujo de ejecucin contina
en este punto.
Por tanto, en el caso de que Z contenga un 1 hay que bifurcar y el cronograma
es igual al de BR. Por el contrario si el resultado de la operacin de la UAL no fue cero
y el contenido de Z es 0, el cronograma de BZ es el mostrado en la Figura 96.
Lo nico que se hace en este caso es generar durante I1 (R2) las micrordenes scp
y era, de manera que el contenido del contador de programa, incrementado durante I1
(R1), se transfiere al bus Ai y de ah al registro RA cuando la seal de reloj valga 1.
88
Manual de Usuario
Captulo 5. Cronogramas
89
90
Manual de Usuario
Instruccin CLR
Esta instruccin permite poner a cero el contenido del acumulador. Su
cronograma es el mostrado en la Figura 99.
Captulo 5. Cronogramas
91
Instruccin DEC
Esta instruccin permite decrementar en una unidad el contenido del acumulador
y volver a almacenar el valor resultante en l. Su cronograma se muestra en la Figura
100.
92
Manual de Usuario
Instruccin HALT
Esta instruccin permite parar la ejecucin de la mquina. Su cronograma se
muestra en la Figura 101.
Captulo 6
Entrada y salida
Smplez tiene dos perifricos, un teclado y una pantalla de texto. A travs del
botn correspondiente de la barra de herramientas de la ventana principal se puede abrir
la ventana que los muestra.
Para activar el teclado de Smplez basta con situar el puntero del ratn encima.
Cuando est activo el teclado de Smplez, si el puerto de datos del controlador del
teclado est preparado para recibir un nuevo carcter, cualquier tecla que se pulse se
transferir directamente al mismo. Para introducir valores en el puerto de datos del
teclado tambin se puede utilizar otro mtodo. Basta con pinchar con el ratn en la
casilla correspondiente a la direccin 511 de las tablas de Memoria de la ventana
principal. Pero este ltimo mtodo slo se puede utilizar si no se est en ejecucin y el
contenido del puerto de control es 0.
94
Manual de Usuario
6.1 Puertos
En Smplez los puertos de entrada y salida comparten el espacio de
direccionamiento de la Memoria Principal. Para comunicarse con ellos se seguir el
mismo procedimiento utilizado para acceder a una posicin de la MP, se pondr en el
bus de direcciones la direccin del puerto y se generar lec o esc, dependiendo del tipo
de operacin a realizar. El descodificador de direcciones detectar que no se trata de
una direccin de la MP y activar el puerto correspondiente.
La direccin 509 corresponde al puerto de la pantalla de texto y la 511 al puerto
del teclado. Por tanto, el resultado de ejecutar la instruccin "ST /509" es la
transferencia de los bits 0 al 7 desde el acumulador al puerto de la pantalla, de manera
que se interpretan como la codificacin de un carcter. De manera similar la ejecucin
de la instruccin "LD /511" provoca la transferencia de la codificacin de un carcter
desde el puerto de teclado a los bits 0 al 7 del acumulador.
La sincronizacin con los puertos de entrada y salida se considera semejante a la
de las operaciones con la Memoria Principal explicada en el Captulo 4, y a los 100 ns
de generar lec o esc la operacin de entrada o salida ha terminado.
95
Que la operacin de entrada o salida haya terminado para la UCP no quiere decir
que el perifrico correspondiente est preparado para iniciar una nueva operacin. A los
100 ns el contenido del acumulador se habr transferido a un registro interno, o puerto
del controlador del perifrico. La UCP podr continuar con la ejecucin de otra
instruccin, pero el perifrico an tardar algn tiempo en completar la operacin. En el
caso concreto de la pantalla de Smplez han de pasar 33 ms para que el carcter
aparezca en la misma. Por tanto, dado que algunos perifricos son mucho ms lentos
que la UCP de la mquina, antes de comenzar una operacin hay que asegurarse de que
el perifrico est preparado. De lo contrario se podra estar enviando caracteres
consecutivos a la pantalla y estar perdindolos debido a que esta ltima no ha terminado
de escribir el primero de ellos. De igual manera, lecturas sucesivas sobre el teclado
devolveran el mismo carcter si el usuario no ha introducido nuevos caracteres y el
programa no lo ha comprobado.
La forma de permitir que un programa pueda comprobar el estado de un puerto
antes de realizar una operacin sobre l, es acompaar a cada puerto de datos de un
puerto de control por el que el controlador de perifrico puede comunicar el estado de
ste a la UCP. El estado puede ser simplemente una informacin binaria que indique si
est o no preparado.
En Smplez los puertos de control se encuentran en las direcciones del mapa de
memoria 508, para la pantalla, y 510, para el teclado. Cuando contengan un "1"
significar que el perifrico en cuestin estar preparado para una nueva operacin, y
"0" si no lo est. El mapeo de puertos de entrada y salida en Smplez y su
comportamiento es el resumido en la Tabla 4, obtenida de [Fernndez,98].
dir
Funcin
508
509
510
511
96
Manual de Usuario
Antes de ejecutar una instruccin "ST /509" para sacar un nuevo carcter por
pantalla, se debe ejecutar la instruccin "LD /508" para llevar el contenido del puerto de
control, es decir el estado del perifrico, al acumulador y poder comprobar si est
preparado para recibir el nuevo carcter. De manera anloga, antes de ejecutar una
instruccin "LD /511" se debe ejecutar la instruccin "LD /510" para comprobar si hay
un nuevo carcter en el puertos de datos del teclado.
La operacin adecuada a realizar depende del puerto al que se acceda, pero un
programa puede no respetarlo y realizar otra operacin. El comportamiento de los
puertos de los perifricos respecto a las lecturas y escrituras es el siguiente. Los puertos
de datos y de control del teclado ignoran las escrituras. El puerto de control de pantalla
atiende lecturas y escrituras en cualquier momento. El puerto de datos de pantalla
ignora las lecturas, y para las escrituras es necesario que el puerto de control est a uno
y que no haya un carcter pendiente de ser mostrado por pantalla para poder transferir
el contenido del bus D al registro.
Hay que observar que cuando se realice una lectura sobre el puerto de pantalla, lo
que realmente se carga en el acumulador es el valor del bus D, que en ese momento
seguramente se encuentre en alta impedancia.
Los registros de control nicamente contienen un "1" o un "0", por tanto para las
escrituras sobre el puerto de control del teclado slo se considera el ltimo bit del valor
transferido.
97
Secuencia escape
07
007
BEL (bell)
08
010
BS
09
011
10
0A
012
LF
12
0C
014
FF
13
0D
015
CR
(carriage return)
(backspace)
98
Manual de Usuario
Dec
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Hex
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
Oct Char
040 SPACE
041
!
042
"
043
#
044
$
045
%
046
&
047
050
(
051
)
052
*
053
+
054
,
055
056
.
057
/
060
0
061
1
062
2
063
3
064
4
065
5
066
6
067
7
070
8
071
9
072
:
073
;
074
<
075
=
076
>
077
?
Dec
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Hex
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F
Oct Char
100
@
101
A
102
B
103
C
104
D
105
E
106
F
107
G
110
H
111
I
112
J
113
K
114
L
115
M
116
N
117
O
120
P
121
Q
122
R
123
S
124
T
125
U
126
V
127
W
130
X
131
Y
132
Z
133
[
134
\
135
]
136
^
137
_
Dec
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
Hex
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F
Oct Char
140
141
a
142
b
143
c
144
d
145
e
146
f
147
g
150
h
151
i
152
j
153
k
154
l
155
m
156
n
157
o
160
p
161
q
162
r
163
s
164
t
165
u
166
v
167
w
170
x
171
y
172
z
173
{
174
|
175
}
176
~
177 DEL
Dec
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
Hex
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
AA
AB
AC
AD
AE
AF
B0
B1
B2
B3
B4
B5
B6
B7
B8
B9
BA
BB
BC
BD
BE
BF
Oct Char
240 SPACE
241
242
243
244
245
246
247
250
251
252
253
254
255
256
257
260
261
262
263
264
265
266
267
270
271
272
273
274
275
276
277
99
Dec
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
Hex
C0
C1
C2
C3
C4
C5
C6
C7
C8
C9
CA
CB
CC
CD
CE
CF
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
DA
DB
DC
DD
DE
DF
Oct Char
300
301
302
303
304
305
306
307
31
31
312
313
314
315
316
317
320
321
322
323
324
325
326
327
330
331
332
333
334
335
336
337
Dec
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
Hex
E0
E1
E2
E3
E4
E5
E6
E7
E8
E9
EA
EB
EC
ED
EE
EF
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
FA
FB
FC
FD
FE
FF
Oct Char
340
341
342
343
344
345
346
347
350
351
352
353
354
355
356
357
360
361
362
363
364
365
366
367
370
371
372
373
374
375
376
377
100
Manual de Usuario
Captulo 7
Herramientas
El simulador incluye un par de herramientas muy tiles para el desarrollo de
programas y de secuenciadores microprogramados. En este captulo se explica en
detalle su utilizacin.
101
102
Manual de Usuario
Captulo 7. Herramientas
103
104
Manual de Usuario
DATA
DATA
RES
1
8
1
; Valor 1
; Valor 8
; Contador
PEN
ULT
RES
RES
1
1
; Diferentes
; trminos de
SIG
SUM
INICIO
RES
RES
CLR
1
1
; la sucesin
; Suma de ellos
; AC a 0
BUCLE
ST
LD
ST
ST
LD
ST
LD
ADD
ST
LD
ADD
ST
LD
/PEN
/UNO
/ULT
/SUM
/OCHO
/CONT
/PEN
/ULT
/SIG
/SUM
/SIG
/SUM
/ULT
;
;
;
;
;
;
;
;
;
;
;
;
;
ST
LD
ST
/PEN
/SIG
/ULT
; a PEN
; SIG a AC
; a ULT
LD
DEC
BZ
/CONT
/FIN
; CONT a AC
; lo decrementa
; si cero, sale
/CONT
/BUCLE
; del bucle
; si no,guardarlo
; vuelve a bucle
FIN
ST
BR
HALT
a PEN
AC a 1
a ULT
a SUM
AC a 8
a CONT
PEN a AC
PEN+ULT
a SIG
SUM a AC
SIG+SUM
a SUM
ULT a AC
END
Programa 2: Suma de los 10 primeros trminos de la sucesin de Fibonacci.
Captulo 7. Herramientas
105
106
Manual de Usuario
Captulo 7. Herramientas
107
Tecla
Operacin
Tabulador
Retorno Carro
Inicio
Fin
Flecha arriba
Flecha abajo
Flecha derecha
Retroceso
CTRL + A
CRTL + C
CRTL + V
CRTL + X
108
Manual de Usuario
Lenguaje ensamblador
El lenguaje ensamblador es un lenguaje simblico que permite escribir programas
evitando en la medida de lo posible el manejo de nmeros, tanto datos o cdigos de
instruccin como posiciones de memoria. Lo que da como resultado un lenguaje ms
cercano al humano y no tan crptico como el lenguaje mquina, y que evita as parte de
los errores producidos durante la creacin de un programa.
El lenguaje ensamblador se compone de instrucciones, seudoinstrucciones,
directivas y etiquetas. Pero adems, para que un programa ensamblador pueda
interpretar el lenguaje simblico es necesario que ste cumpla una serie de reglas. Este
conjunto de reglas y la especificacin completa de los elementos anteriores, definen la
sintaxis del lenguaje ensamblador.
El modelo funcional de Smplez, descrito en la pgina 126, junto con la sintaxis
del lenguaje ensamblador permiten escribir cualquier programa usando el editor.
Captulo 7. Herramientas
109
Etiquetas
Una etiqueta es un nombre, cadena de caracteres, que sustituye a una direccin de
memoria. Esta direccin ser la de la posicin que ocupe en memoria la instruccin a la
que acompaa. La etiqueta puede ser utilizada en las instrucciones del programa para
hacer referencia a dicha direccin. Dado que la memoria de Smplez tiene 512 palabras,
el rango de una etiqueta va de 0 a 511.
Una etiqueta ha de cumplir las siguientes normas:
110
Manual de Usuario
Instrucciones
Las estructuras posibles de una instruccin en el lenguaje ensamblador son las
mostradas en la Figura 110.
Captulo 7. Herramientas
111
Seudoinstrucciones
Una seudoinstruccin es una informacin dirigida al programa ensamblador
indicndole que haga algo en una direccin de memoria, pero que no se traducir por
una instruccin de lenguaje mquina, al no pertenecer la seudoinstruccin al repertorio
de instrucciones. El ensamblador de Smplez dispone de dos seudoinstrucciones, DATA
y RES, cuyas estructuras posibles se muestran en la Figura 111.
112
Manual de Usuario
Captulo 7. Herramientas
113
Directivas
Las directivas son informaciones para el programa ensamblador, indicndole
cmo organizar el cdigo. A diferencia de las seudoinstrucciones no implican ninguna
operacin sobre una direccin de memoria. El ensamblador de Smplez maneja tres
directivas; MODULE, EQU y END, mostradas en la Figura 116.
114
Manual de Usuario
Captulo 7. Herramientas
115
Comentarios
El programa ensamblador permite tambin poner comentarios. Estos ayudan a
organizar un programa y explicar qu se est haciendo en determinado sitio. Un punto y
coma identifica el comienzo de un comentario, y el resto de la lnea donde aparece se
interpreta como tal.
116
Manual de Usuario
Figura 120: Ejemplo de acceso a memoria utilizando una operacin con etiquetas.
Captulo 7. Herramientas
117
118
Manual de Usuario
Los pasos necesarios para poder ejecutar un programa fuente, teniendo en cuenta
que para poder ejecutar un programa ste debe cargarse previamente en memoria, son
los siguientes:
1. El sistema operativo carga en memoria el programa ensamblador.
2. Se ejecuta el programa ensamblador. El cual toma como datos el programa
fuente y genera como salida el cdigo objeto.
3. El sistema operativo carga en memoria el cdigo objeto generado.
4. Se ejecuta el cdigo objeto.
En el proceso descrito, el ensamblador genera un cdigo objeto interpretable por
la mquina y el sistema operativo en cuestin. Si se quisiera ejecutar el programa fuente
en otra mquina con otra arquitectura, o en la misma mquina pero con otro sistema
operativo, probablemente no bastara con mover el cdigo objeto de una a otra. Sera
necesario repetir todo el proceso, pero utilizando esta vez un nuevo programa
ensamblador adaptado a la nueva arquitectura que genere las instrucciones binarias que
sta interpreta.
En el caso del programa ensamblador del simulador ocurre algo parecido. Tras
ensamblar el programa fuente se obtiene un cdigo objeto ejecutable por Smplez, pero
no por la mquina en que se est ejecutando el editor de programas, probablemente un
PC con Windows. Por ello, o se utiliza un ensamblador que lo traduzca a dicha
arquitectura, o se utiliza un simulador que permita ejecutar el cdigo objeto como si se
estuviera ejecutando sobre Smplez. Es decir, el simulador se comporta como una
mquina virtual de Smplez.
Por tanto, para el caso de Smplez, el proceso para lograr ejecutar el programa
fuente escrito en ensamblador es el mostrado en la Figura 122, donde hay dos pasos
adicionales.
A) Con un editor se genera el programa fuente, fichero con extensin .SIM, y
carga en memoria el programa ensamblador.
B) Se ejecuta el ensamblador, el cual genera el cdigo objeto y lo almacena en
disco en un fichero de extensin .LNS.
C) Una vez ensamblado el programa, el sistema operativo carga en memoria el
programa simulador, y lo ejecuta. El programa ensamblador ya no es
necesario y se puede cerrar.
D) El simulador carga en memoria el cdigo objeto y lo ejecuta.
Captulo 7. Herramientas
119
En el caso particular del simulador descrito en este manual hay que hacer dos
puntualizaciones. El entorno de edicin, ensamblacin y simulacin estn integrados,
por lo que una vez que se arranque el simulador, tal y como se explica en el Prefacio,
todas estas herramientas estarn cargadas ya en memoria y el paso (C) no es necesario.
En segundo lugar el simulador est escrito en Java, cuyo cdigo compilado no es
ejecutable directamente en ningn sistema operativo. La compilacin de un programa
escrito en Java genera un cdigo denominado cdigo de bytes. Este cdigo necesita un
interprete, denominado mquina virtual de Java, que permita ejecutarlo.
De esta manera el simulador escrito en Java, es compilado a este cdigo de bytes.
El resultado es un simulador independiente de la plataforma donde se vaya a ejecutar, y
es el interprete o mquina virtual el que es dependiente de la misma. Esto permite
llevarse el simulador de una mquina a otra, donde haya instalada una mquina virtual
de Java, y ejecutarlo independientemente de la plataforma de la mquina destino sin
necesidad de recompilarlo.
Haciendo un analoga, se puede aplicar la Figura 122 para ilustrar este proceso.
Slo hay que sustituir la palabra ensamblador por compilador de Java, y simulador por
mquina virtual de Java. El cdigo objeto de la figura sera el simulador de Smplez.
Cuando se quiera ejecutarlo, paso (D), se necesita arrancar la mquina virtual
indicndole que ejecute el simulador, tal y como se explic en el Prefacio. Una vez
arrancado el simulador se completara la figura con los pasos (B), para el caso de
ensamblacin de un programa de Smplez, y (D), para el caso de ejecucin de un
programa de Smplez.
120
Manual de Usuario
Captulo 7. Herramientas
121
La parte de la Memoria de Control de la que salen las lneas paralelas, y que tiene
un tamao sealado de 18 bits, es la que se corresponde con la matriz de ordenes del
editor de microprogramas. Los 18 bits se corresponden con cada una de las
micrordenes de control de la Ruta de Datos.
La parte de la derecha, de 3 bits de tamao y de la que sale el bus DB que conecta
con el multiplexor MPX, es la matriz de direcciones.
La Figura 125 muestra la Memoria de Control interpretada desde el punto de vista
del editor de microprogramas.
122
Manual de Usuario
Para hacer que una microorden est activa dentro de una microinstruccin
determinada, nicamente hay que pulsar el botn de la fila y columna correspondientes,
haciendo que ste tenga el aspecto de la Figura 126. En caso contrario tendr valor "0".
Figura 126:
Microorden
activa.
Captulo 7. Herramientas
123
Nota Cada vez que se edite la Memoria de Control y se salve a disco hay
que cargarla de nuevo desde el men.
Una vez se haya terminado de editar una Memoria de Control, se pueden limpiar
las matrices pulsando el botn de la izquierda de la barra de herramientas.
124
Manual de Usuario
Como se puede observar el manejo del editor es muy sencillo. Supngase por
ejemplo que se quiere que la microorden eac est activa en todos los ciclos de reloj,
independientemente de la utilidad que esto pueda tener. Cada ciclo de reloj se
corresponde con una microinstruccin de la Memoria de Control, por lo que se debera
marcar eac en todas las columnas del editor tal y como muestra la Figura 128.
Captulo 8
Programacin de Smplez
En los captulos anteriores se ha explicado en detalle la utilizacin del simulador
y se han introducido como ejemplo un par de programas. La finalidad ltima del
simulador es la ejecucin de programas escritos para Smplez. Quedara por tanto
explicar cmo programar el ordenador Smplez.
Dado que la programacin de Smplez se cubre ampliamente en [Fernndez, 98] y
que la finalidad del manual de usuario no es explicar metodologa de programacin,
este captulo slo se centra en cmo programar Smplez desde el punto de vista del
simulador. Para ello primero se explicarn los conceptos de Smplez necesarios y luego
se desarrollarn dos ejemplos, con los que se explicarn las dos formas de programar
Smplez utilizando el simulador. Esto tambin valdr para revisar conceptos vistos a lo
largo de los captulos anteriores.
126
Manual de Usuario
maneja, de manera que es ms fcil leer e interpretar los programas. Para facilitar an
ms la tarea se puede definir un lenguaje ensamblador de manera que una vez escrito
el programa se puede utilizar un programa ensamblador que interprete dicho cdigo
nemnico y que genere los cdigos binarios.
127
Nmeros
En Smplez nicamente se consideran los nmeros enteros no negativos. Estos se
almacenarn en una nica palabra de la Memoria Principal. Dado que la longitud de la
palabra de la MP es de 12 bits el rango de nmeros representables en Smplez va de 0 a
4095.
Dentro de la memoria se usa el convenio de interpretar el bit ms a la izquierda
de la palabra como el ms significativo, y el de ms a la derecha como el menos
significativo.
Dado que casi todos los elementos que componen la Ruta de Datos de Smplez,
excepto los puertos de entrada y salida, utilizan tamaos de palabra mltiplos de tres, la
representacin octal es ideal para representar los nmeros y hacerlos ms legibles que
en el cdigo binario. El Simulador incluye este formato en todos los sitios donde se
manejan nmeros.
Teniendo en cuenta todos estos aspectos, la Tabla muestra algunas equivalencias
entre binario, decimal y octal para el tamao de palabra manejado en Smplez.
Binario
Octal
Decimal
000000000000
0000
0000000000001
0001
000000000010
0002
000000000011
0003
...
...
...
000000000111
0007
000000001000
0010
000000001001
0011
...
...
...
111111111110
7776
4094
111111111111
7777
4095
128
Manual de Usuario
Caracteres
Tal y como se explic en el Captulo 6, la comunicacin con el usuario a travs de
los dispositivos perifricos se realiza mediante cadenas de caracteres. Cada carcter se
representa por su codificacin en ISO Latin1. Este cdigo utiliza ocho bits para
representar cada carcter. En el Captulo 6 se incluye una descripcin del cdigo ISO
Latin1.
Instrucciones
Las instrucciones. de Smplez tienen dos campos: el cdigo de operacin (CO) y
la direccin del operando (CD). Cada instruccin ocupa una palabra de MP. Las
palabras de MP tienen 12 bits, de los cuales CD ocupa los bits 0 a 8, y CO ocupa los
bits 9, 10 y 11.
Repertorio de Instrucciones
El repertorio de Smplez se compone de las ocho instrucciones, identificadas por
el Cdigo de Operacin (CO), mostradas en la Tabla 10.
La primera columna muestra el Cdigo de operacin en binario. ste es el
formato manejado por la mquina. La segunda columna muestra su codificacin en
octal, ms natural para nosotros, y directa al tratarse de 3 bits. Este formato es, adems,
uno de los manejados en la Ruta de Datos del simulador. En la tercera columna se
muestra el cdigo nemnico asociado. Este cdigo es el utilizado para representar a las
instrucciones en el lenguaje ensamblador y en la tabla de Programa de la ventana
principal.
CO
CO
(bin.) (oct.)
129
CO Significado
(nem.)
000
ST
001
LD
010
ADD
011
BR
100
BZ
101
CLR
110
DEC
111
130
Manual de Usuario
LD
ST
ADD
ST
BR
/1
/509
/2
/1
/5
131
132
Manual de Usuario
[5]
[6]
[7]
[8]
[9]
[10]
[11]
LD
ST
LD
ST
ADD
ST
BR
/2
/508
/1
/509
/2
/1
/7
133
Dado que el objetivo era pintar los caracteres, podra parecer que esto ya est
hecho y que el programa est funcionando correctamente, ya que salen todos y en
secuencia. Sin embargo este programa contiene un error muy grave. Manda los
caracteres al controlador de pantalla sin comprobar si ste est preparado. Al haber
reducido la duracin del ciclo de pantalla ha coincidido que la duracin de las
instrucciones del bucle es mayor de 16 ciclos y da tiempo a terminar el ciclo de
pantalla. Si se utilizara un ciclo de pantalla mayor o incluso el siguiente bucle:
[5]
[6]
[7]
[8]
[9]
[10]
LD
ST
LD
ST
ADD
BR
/2
/508
/1
/509
/2
/8
que en principio debera producir el mismo resultado pero sin ir almacenando y leyendo
el valor del carcter en curso, se observar que el resultado sacado por pantalla es
notablemente diferente tal y como muestra la Figura 134.
134
Manual de Usuario
LD
ST
LD
ST
ADD
ST
LD
BZ
BR
/2
/508
/1
/509
/2
/1
/508
/11
/7
135
Para solucionar lo primero basta con comprobar que el ltimo carcter impreso
por pantalla ha sido "", tras lo cual bifurcar a una posicin que contenga la instruccin
HALT. Para realizar la comprobacin se puede almacenar el valor complementario a
4095 del cdigo correspondiente a "", de manera que la suma de ambos valores sea
4096, que dentro del acumulador pasara a ser un cero. Dado que el cdigo de "" es
255, y que dicho valor ya se ha incrementado con la instruccin de posicin [9], el valor
que se debe sumar para obtener un 0 en el acumulador es 3840. Por tanto quedara algo
semejante a:
[a]
[b]
[c]
[d]
[e]
LD
ADD
BZ
BR
HALT
/cdigo_carcter
/complementario
/e
/7
136
Dir.
Mem.
[0]
[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]
Manual de Usuario
Cont.
(octal)
3006
0040
0001
0240
7600
7400
1002
0774
1001
0775
2002
0001
1774
4014
1001
2004
4022
3010
1003
0775
2002
0003
1774
4026
1003
2005
4034
3022
7000
Contenido
(nemnico)
BR /6
32
1
160
3968
3840
LD /2
ST /508
LD /1
ST /509
ADD /2
ST /1
LD /508
BZ /12
LD /1
ADD /4
BZ /18
BR /8
LD /3
ST /509
ADD /2
ST /3
LD /508
BZ /2
LD /3
ADD /5
BZ /28
BR /18
HALT
Comentarios
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
Programa 3: Muestra todos los caracteres por pantalla con dos bucles.
137
LD
ST
LD
ST
LD
ST
BR
BZ
/NUEVO_CARCTER
/1
/NUEVO_COMPLEMENTO
/4
/h
/16
/INICIO BUCLE
/18
LD
ADD
BZ
BR
HALT
/1
/4
/a
/8
138
Manual de Usuario
LD
ADD
BZ
BR
HALT
/1
/4
/18
/8
Dir.
Mem.
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
...
[50]
[51]
[52]
[53]
[54]
[55]
[56]
[57]
Cont.
(octal)
3006
0040
0001
0240
7600
7400
1002
0774
1001
0775
2002
0001
1774
4014
1001
2004
4022
3010
7000
...
1003
0001
1005
0004
1071
0020
3010
4022
Contenido
(nemnico)
BR /6
32
1
160
3968
3840
LD /2
ST /508
LD /1
ST /509
ADD /2
ST /1
LD /508
BZ /12
LD /1
ADD /4
BZ /50
BR /8
HALT
... ...
LD /3
ST /1
LD /5
ST /4
LD /57
ST /16
BR /8
BZ /18
139
Comentarios
140
Manual de Usuario
DATA
EQU
10
109
RES
141
RES
;
;
;
;
;
;
INICIO
LD
ST
CLR
ADD
ST
LD
DEC
BZ
ST
LD
DEC
ST
LD
BR
HALT
END
/DIEZ
/CONT
; Inicializa el contador
; de vueltas del bucle
/DIR
/SUMA
/CONT
;
;
;
;
;
;
;
;
;
;
;
BUCLE
FIN
/FIN
/CONT
/BUCLE
/BUCLE
/SUMA
/BUCLE
Bifurca al comienzo
Cantidad de nmeros
Vueltas del bucle
Direccin del ltimo
nmero a sumar
Resultado de la suma
Suma un nmero
Guarda suma parcial
Decrementa el
contador
Si es cero terminamos
Si no, actualiza el contador
Modificamos la instruccin
de suma para que tome el
siguiente nmero
Cargamos en AC la suma parcial
Volvemos al comienzo del bucle
142
Manual de Usuario
143
144
Manual de Usuario
Slo quedan por introducir los datos a sumar en las posiciones que van desde la
100 a la 109. Para ello se puede utilizar directamente la tabla de Memoria de la ventana
principal. Supngase que son los mostrados en la Figura 138.
145
146
Manual de Usuario
Captulo 9
Microprogramacin de Smplez
Los simuladores de computadores implementan normalmente todo lo visto hasta
ahora. Permiten escribir, ensamblar y simular la ejecucin de programas escritos en su
lenguaje mquina, ensamblador y, en algn caso, en lenguajes de alto nivel.
El simulador de Smplez permite dar un paso ms y microprogramar la mquina.
Es decir, permite modificar el diseo del secuenciador de la UCP. Lo que supone la
modificacin del hardware de la mquina.
Gracias a la microprogramacin se pueden crear nuevas instrucciones que realicen
tareas diferentes a las implementadas por el repertorio de instrucciones del
secuenciador cableado. Estas tareas estn muy limitadas debido al sencillo diseo de
Smplez, pero permiten entender en profundidad el diseo y funcionamiento de la Ruta
de Datos.
Primero se revisan brevemente los conceptos tericos necesarios para
microprogramar. En [Fernndez,98] se puede encontrar un explicacin completa de los
mismos.
147
148
Manual de Usuario
I1
O0
esc, sac
O1
149
Direccin
MC
Microinstruccin
correspondiente al estado
I1 de ST
I1 de LD
I1 de ADD
I1 de BR
I1 de BZ
I1 de CLR
I1 de DEC
I1 de HALT
O0 de ST
O1 de ST
10
O0 de LD
11
O1 de LD
12
O0 de ADD
13
O1 de ADD
14
Libre
15
I0 comn
150
Manual de Usuario
Dir. 0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1
0 1 2 3 4 5
O.
eac
0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0
eri
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
incp 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
ecp
0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0
ccp
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
era
1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 0
pac 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
sum 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
tra2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
dec1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
lec
0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1
esc
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
sac
1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0
sri
1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
scp
0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 0
cbf
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
sco
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
bbz 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
dir1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0
dir2 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 0
dir3 0 0 1 1 1 1 1 1 0 1 0 1 1 1 0 0
Tabla 13: Contenido de la Memoria de Control.
151
9.2 Implementacin
Hay una serie de cuestiones relativas a la implementacin del simulador que es
necesario tener en cuenta a la hora de microprogramar.
Final de instruccin
El criterio utilizado por el simulador para saber que comienza una nueva
instruccin es que la microinstruccin siguiente contenga la microorden sco activa. La
razn es que esta microorden hace que la direccin de la siguiente microinstruccin de
la Memoria de Control a ejecutar se lea desde el bus D, en lugar de utilizar el campo de
direccin de la microinstruccin en curso.
En la implementacin cableada el criterio seguido es que el biestable I tenga el
valor "1" y el biestable T el valor "0".
Instruccin en curso
El campo "En curso" de la ventana principal indica en todo momento qu
instruccin se est ejecutando. El campo muestra adems la direccin de memoria
dnde se encuentra.
El simulador obtiene la instruccin leyendo el contenido del Registro de
Instruccin. La direccin en memoria de la instruccin la obtiene leyendo del bus
directamente. Esto hace que nicamente la parte correspondiente a la instruccin del
campo "En curso" sea cierta con seguridad. La direccin puede no serla. Por ejemplo,
en el caso en que no se genere la microorden eri durante I0 para actualizar el Registro
de Instruccin con el valor presente en el bus D, en el siguiente ciclo de reloj se
ejecutar la instruccin ya presente en el mismo al comienzo de I0. El campo "En
curso" mostrar en cambio la direccin de la instruccin que debera estar ejecutndose.
Puede parecer que esta situacin no es posible debido a que siempre se ejecutara
la instruccin "ST /0", que es la que se corresponde con el contenido inicial del Registro
de Instruccin, y nunca cambiara su valor. Pero no hay que olvidar que el cualquier
momento se puede cambiar el secuenciador a utilizar y el valor contenido por el
Registro de Instruccin correspondera a la ltima instruccin ejecutada con otro
secuenciador.
152
Manual de Usuario
9.3 Microprogramacin
En este apartado se ver un ejemplo de utilizacin del editor para microprogramar
Smplez. Supngase que se quiere crear una instruccin compuesta por tantas
microinstrucciones como sea posible. Se podra pensar en crear una instruccin
compuesta por 16 microinstrucciones, marcando sco o no segn fuera necesario en cada
microinstruccin para direccionar toda la Memoria de Control. Pero esto no es posible
dado que, como ya se explic en captulos anteriores, esta microorden tambin marca el
comienzo de una nueva instruccin. De manera que su aparicin supone el final de la
instruccin en curso.
Por tanto la instruccin podr estar compuesta por un mximo de 9
microinstrucciones. La primera la de direccin 15, que tal y como se explica en el
Captulo 9, es comn a todas las instrucciones del repertorio y se encarga, gracias a sco,
de comprobar de qu instruccin se trata y as poder decidir cul es el punto de entrada
en la Memoria de Control. La segunda microinstruccin ser una de las 8 primeras,
dependiendo de qu instruccin del repertorio se vaya a sobreescribir. El resto de
microinstrucciones se corresponden con las que van de la posicin 8 a la 14 inclusive.
En realidad cuando se habla de sobreescribir una instruccin se refiere a utilizar
su cdigo de operacin, ya que al utilizar toda la parte superior de la Memoria de
Control se est sobreescribiendo ST, LD y ADD que son las que necesitan 4
microinstrucciones para llevar a cabo su cometido. La instruccin escogida para utilizar
su cdigo de operacin es ST. Cuando en el registro de instruccin se cargue la
instruccin a ejecutar por obra de la microinstruccin de direccin 15 y sta resulte ser
ST, se ejecutarn las ocho microinstrucciones restantes.
El contenido de la matriz de direcciones, habiendo puesto a cero las que no son
relevantes e incluyendo la lnea que indica a que microinstruccin pertenece cada una,
es el de la Figura 140.
153
154
Manual de Usuario