EJECUCIÓN DE UNA INSTRUCCIÓN

 

    Ahora se intentará conjuntar la secuencia de operaciones elementales necesarias para ejecutar una instrucción. Considérese la instrucción “Sumar el contenido de la localización NUM de la memoria al registro R1″. Para simplificar las cosas, la dirección NUM se da en forma explícita en el campo de dirección de la instrucción. Entonces, la localización NUM se especifica en el modo directo de memoria. La ejecución de esta instrucción requiere de las siguientes acciones.

1.Traer la instrucción

2.Traer el primer operando (el contenido de la localización de la memoria a la que señala el campo de dirección de la instrucción).

3.Realizar la adición

4.Cargar el resultado en RI.

PASO

1 .- PC salida, MAR entrada, Leer, Borrar Y, Fijar el acarreo de la ALU, Suma, Zentrada

2.- Z salida, PC entrada, Espera a MFC

3.- MDR salida, IR salida

4.- Campo de dirección de IR salida, MAR entrada, Leer

5.- R1salida, Yentrada, Espera a MFC

6.- MDR salida, Suma, Z entrada

7.- Z salida, R1 entrada

8.- Fin

    Entonces, la ejecución de instrucción sucede de la siguiente forma. En el paso 1 la operación de traída de la instrucción se inicia cargando el contenido del PC en el MAR y enviando una solicitud de Leer a la memoria. A1 mismo tiempo se incrementa el PC en 1 a través del uso de la ALU. Esto se logra poniendo una de las entradas a la ALU (registro Y) en 0 y la otra entrada (bus de la CPU) en el valor presente que contenga el PC. Al mismo tiempo el acarreo a la ALU se iguala a 1 y se especifica una operación de Sumar.

    El valor actualizado se regresa del registro Z al PC durante el paso dos. Obsérvese que el paso dos se inicia inmediatamente después de emitir la solicitud de Leer de a memoria, sin necesidad de esperar la conclusión de la función de la memoria. Sin embargo, el paso 3 tiene que retardarse hasta que se reciba el MFC. En el paso 3, a palabra traída de la memoria se carga en el IR (registro de instrucción: instruction register). Los pasos del 1 al 3 constituyen la fase de traída de instrucción de la secuencia de control. Desde luego, esta parte es la misma para todas las instrucciones.

    En cuanto el IR está cargado, el circuito de decodificación de instrucción interpreta su contenido. Esto permite a la circuitería de control elegir las señales adecuadas para la parte restante de la secuencia de control, pasos 4 a 8, a los que se considera como la fase de ejecución. En el paso 4, el campo de dirección del IR que contiene la dirección NUM, es manejado por compuerta y se lleva al MAR y se inicia una operación de Leer de la memoria. Después el contenido de la memoria R1 se transfiere al registro Y. Cuando se completa la operación de Leer, el operando de la memoria está disponible en el registro MDR. La operación de adición se realiza en el paso 6 y el resultado se transfiere a R1 en el paso 7. La señal de Fin, paso 8, indica la conclusión de la ejecución de la presente instrucción y provoca que se inicie un nuevo ciclo de traída regresando de nuevo al paso 1.

 

Ramificación

 

    Las ramificaciones se logran reemplazando el contenido actual del PC por la dirección de ramificación, esto es, la dirección de la instrucción a la cual se refiere una ramificación. Por lo común, la dirección de ramificación se obtiene sumando al valor actual del PC, un valor X de compensación, el cual está dado en el campo de dirección de la instrucción de ramificación.

    Ahora es posible implantar la instrucción de Ramificación en Negativo por medio de un microprograma.            Se considera que el microprograma para esta instrucción empieza en la localización 25. Por lo tanto, una microinstrucción de Ramificación, al final de la parte de traída de instrucción del microprograma, transfiere el control a la localización 25. Debe observarse que la dirección de ramificación de esta instrucción de Ramificación es en realidad la salida del bloque de "generación de dirección inicial". En la localización 25, una microinstrucción de ramificación condicional prueba el bit N de los códigos de condición y provoca una ramificación a Fin, si este bit es igual a 0.

 

Ramificación en Negativo por medio de un microprograma

Para apoyar la ramificación de microprogramas, la organización de la unidad de control debe modificarse según se muestra en la figura

 

 

    Los bits de la palabra de microinstrucción que especifican las condiciones y dirección de ramificación se alimentan al bloque "generador de dirección inicial y ramificación". Este bloque realiza la función de cargar una nueva dirección en el PC cuando así se le indica, por medio de una microinstrucción. Para habilitar el implante de una ramificación condicional, las entradas a este bloque consisten en banderas de condición y códigos, tanto de condición, como del contenido del registro de instrucción. Por lo tanto, el ~ PC siempre se incrementa cada vez que se trae una nueva microinstrucción a partir de la memoria de microprograma, excepto en las siguientes situaciones:

  1. Cuando se encuentra una microinstrucción a Fin, el UPC se carga con la dirección de la primera CW del microprograma para el ciclo de traída de instrucción (dirección = 0 ).

  2. Cuando se carga una nueva instrucción en el IR, el m PC se carga con la dirección inicial del microprograma para esa instrucción.

  3. Cuando se encuentra una microinstrucción de Ramificación, y la condición de ramificación se satisface, el m PC se carga con la dirección de ramificación.

    Organizaciones semejantes a la de la figura anterior se han implantado en muchas máquinas. Sin embargo, también se han desarrollado algunos enfoques alternativos que se han implantado en la práctica.

    En conclusión, deben observarse algunos puntos importantes en lo referente a las máquinas microprogramadas, los cuales son:

  1. Los microprogamas definen el conjunto de instrucciones de la computadora. Por lo tanto, es posible modificar el conjunto de instrucciones con cambiar el contenido de la memoria de microprograma. Esto ofrece considerable flexibilidad tanto al diseñador como al usuario de la computadora.

  2. Ya que el contenido de la memoria de microprograma se cambia con muy poca frecuencia, si es que se llega a hacer, por lo general se llega a utilizar en una memoria de tipo sólo de lectura (ROM: Read Only Memory,).

  3. La ejecución de cualquier instrucción de máquina involucra varias traídas de la memoria de microprograma. Por lo tanto, la velocidad de esta memoria desempeña un papel importante para determinar la velocidad general de la computadora.

 

Ciclo de instrucción

 

    Un programa residente en la unidad de memoria de la computadora esta formado por una secuencia de instrucciones. El programa se ejecuta en la memoria recorriendo un ciclo para cada instrucción. A su vez, cada ciclo de instrucción se divide en una secuencia de subciclos o fases. En la computadora básica cada ciclo de instrucción consiste en las siguientes fases:

1.     Buscar una instrucción de la memoria

2.     Decodificar la instrucción

3.     Leer la dirección efectiva de la memoria si la instrucción tiene una dirección indirecta

4.     Ejecuta la instrucción

Cuando se termina el paso 4, el control regresa al paso 1 para buscar, decodificar y ejecutar la siguiente instrucción. Este proceso continua en forma indefinida a menos que se encuentre una instrucción de alto (HALT). 

Las microoperaciones para las fases de búsqueda y de codificación pueden especificarse mediante los siguientes enunciados:

        T0: AR

Para T0 la dirección de PC se transfiere a AR. 
Para T1 la palabra de memoria leer dada por la dirección AR, se transfiere al registro de instrucciones, al mismo tiempo PC se incrementa en 1 a fin de reparar la dirección de la siguiente instrucción. 

Para T2 se codifica el código de operación en IR dado por los bits 12, 13 y 14; el bit indirecto se transfiere al registro I, y la parte de la dirección de la instrucción se transfiere a AR. 

Para los dos primeros enunciados la implantación es la siguiente: 

 

Transferencias de registros para la fase de busqueda

 

Diagrama de flujo para el ciclo de instrucción

Para T3: si D7=1, el código de operación=111 binario, la instrucción debe de ser del tipo de referencia a registro de E/S. 

Si D7=0 el código de operación=000-110, la instrucción es del tipo de referencia a memoria. 

Si D7=0 y I=1 es una operación de referencia a memoria con direccionamiento indirecto, AR

 


                       Instrucciones de referencia a memoria

                          DECODIFICADOR

              SIMBOLO      DE OPERACIÓN               DESCRIPCION SIMBOLICA

               AND            D0             AC

 

Entrada/Salida de interrupción

 

 

 

Banderas FGO y FGI

 

    FGI=1 se activa cuando hay información disponible en el dispositivo de entrada o se pone a cero cuando la computadora acepta la información.


 

    FGO=1 La información de AC, se transfiere en paralelo a OUTR.


    FGO=0 Cuando se imprime el carácter en la impresora.


 

    Cuando se oprime una tecla se ejecuta un corrimiento sobre un codigo alfanumerico de 8 bits dentro de INPR y la bandera FGI se inicia en 1.


 

    Mientras la bandera esta en 1, no puede cambiarse la información en INPR al oprimir otra tecla. La computadora comprueba el bit y si es 1, la información de INPR se inicia a cero.    Una vez que se desactiva la bandera puede introducirse información nueva dentro de INPR al oprimir una tecla.

 

    El registro de salida OUTR funciona en forma similar pero la dirección del flujo de información esta invertida.

 

    Si FGO=1 la información del registro AC se transfiere paralelo al registro OUTR y  FGO se desactiva a cero. El dispositivo de salida acepta la información codificada e imprime el carácter correspondiente y cuando termina la operación activa a FGO en 1.


 

Interrupción del programa


    El Flip-Flop de habilitación de interrupción IEN puede habilitarse con dos instrucciones.    Cuando IEN se borra a cero(con la instrucción IOF) las banderas no pueden interrumpir a la computadora. Cuando IEN se activa en 1(con la instrucción ION) la computadora esta vez si puede ser interrumpida. Estas dos instrucciones le proporcionan al programador la opción de decidir si utiliza o no la opción de interrupción.




 

 

 

§  Cuando R=0, la computadora ejecuta un ciclo de instrucción.

§   

§  Si IEN=0 continua el ciclo de instrucción.

§   

§  Si IEN=1 el control controla las banderas FGI y FGO, si son igual a

§  cero, INPR y OUTR no estan listos para transferencia de información y continuar

§  el ciclo de instrucción.

§   

§  Si alguna bandera=1, se ejecuta la transferencia de INPR y de OUTR y entonces

§  el Flip-Flop R se inicia en 1.

§   

§  Si R=1 la computadora se va a un ciclo de interrupción.

§   

 

    La dirección de retorno se almacena en la localidad de memoria cero, después el control inserta la localidad 1 dentro del registro PC y deshabilita a IEN y al regisrto R para que no ocurran más interrupciones hasta que se haya atendido la solicitud de interrupcion de la bandera.

 

El Flip-Flop R se activa cuando:

        IEN=1

        FGI=1

        FGO=1

        T3 esta presente

          Por lo tanto T0, T1, T2=0

                      T´0, T´1, T´2(IEN)*(FGI+FGO):R

 

<iframe><noscript><xmp><pre>