23 de enero de 2011

6.1 Función de la unidad de control durante la ejecución de una Instrucción.

Introducción a la unidad de control
La unidad de control el elemento que se encarga de sincronizar las acciones que realiza cada una de las unidades funcionales de un computador. Las funciones de la unidad de control son básicamente dos.
Interpretación de las instrucciones: La unidad de control debe ser capaz de decodificar los códigos de operación y los modos de direccionamiento de las instrucciones y actuar de forma diferente para cada uno de ellos.
Secuenciamiento de las operaciones: La unidad de control se encarga de la temporización de las distintas operaciones necesarias para la ejecución de cada instrucción. También debe controlar el secuenciamiento de las instrucciones en función de la evolución del registro contador de programa.
Se llaman señales de control a las variables binarias que controlan las entradas y salidas de información de los registros y el funcionamiento de las unidades funcionales.
La ejecución de una instrucción se divide en varias etapas que deben realizarse según una secuencia muy precisa de señales de control que establece la señal de control. Hay dos formas básicas para implementar la unidad de control:
- Unidad de control cableada: Realiza sus funciones mediante elementos hardware. No la analizaremos en profundidad aquí.
-Unidad de control microprogramada: Es mas lenta que la anterior, pero permite implementar instrucciones mas potentes y flexibles. Será analizada en profundidad en los siguientes apartados.
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
En la figura 8 se da la secuencia de pasos de control necesarios para implantar las operaciones anteriores en la estructura de bus único. 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. En la figura 9 se proporciona una secuencia de control que permite la ramificación de control incondicional utilizando la organización de bus único de la figura 1. Como de costumbre, la ejecución se empieza con la fase de traída y termina cuando la instrucción se carga en el IR en el paso 3. Para ejecutar la instrucción de ramificación, el contenido del PC se transfiere al registro Y en el paso 4. Después el valor de compensación X se envía por compuerta al bus y se realiza la operación de adición. El resultado, que representa la dirección de ramificación, se carga en el PC en el paso 6.
PASO
1.- PC salida, MAR entrada, Leer, Borrar Y, Fijar el acarreo de la ALU, Suma, Z entrada
2.- Z salida, PC entrada, Espera a MFC
3.- MDR salida, IR salida
4.- PC salida, Yentrada
5.- Campo de dirección de IR salida, Suma, Z entrada
6.- Z salida, PC entrada
7.- Fin
Es importante observar que en este ejemplo el PC se incrementa durante la fase de traída, sin importar el tipo de instrucción que se esté ejecutando. Así, en el momento en que el valor de compensación X se suma al contenido del PC, pasos 4 y 5 de la figura 9, este contenido ya se ha actualizado para que apunte a la instrucción que sigue en el programa a la instrucción de Ramificación. Por lo tanto, el valor de compensación X debería ser la diferencia entre la dirección de ramificación y la dirección que sigue de inmediato a la instrucción de Ramificación. Por ejemplo, si la instrucción de Ramificación está en la localización 1000 y se requiere ramificar a la localización 1050, el valor de X debería ser de 49.
Considérese ahora 1 caso de una ramificación condicional, en vez de una ramificación incondicional. La única diferencia entre este caso y el de la figura 9 es el de la necesidad de verificar el estado de los códigos de condición entre los pasos 3 y 4.Por ejemplo, si la circuitería de decodificación de instrucción interpreta el contenido del IR como una instrucción de Ramificación en caso negativo (BRN: Branch on Negative), la unidad de control opera de la siguiente forma: primero, se verifica el registro de código de condición. Si el bit N (negativo) es igual a 1, la unidad de control procede a los pasos del 4 al 7 como en la figura 9. Por otra parte, si N es igual a 0 se emite una señal de Fin. En realidad, esto concluye la ejecución de la instrucción de Ramificación y provoca que la instrucción inmediata del programa se traiga, cuando se realice una nueva operación de traer. Por lo tanto, la secuencia de control para la secuencia de Ramificación condicional BRN puede obtenerse a partir de la figura 9 reemplazando el paso 4 por:
If then End
If N then PC salida, Y entrada.

Soto Lauro. Funcion Unidad de Control. Recuperado de: http://www.mitecnologico.com/Main/FuncionUnidadControl

No hay comentarios:

Publicar un comentario