Funcionamiento+de+la+unidad+de+Control

La función principal de la unidad de control de la UCP es dirigir la secuencia de pasos de modo que la computadora lleve a cabo un ciclo completo de ejecución de una instrucción, y hacer esto con todas las instrucciones de que conste el programa. Los pasos para ejecutar una instrucción cualquiera son los siguientes: I. Ir a la memoria y extraer el código de la siguiente instrucción (que estará en la siguiente celda de memoria por leer). Este paso se llama ciclo de //fetch// en la literatura computacional (//to fetch// significa traer, ir por). II. Decodificar la instrucción recién leída (determinar de que instrucción se trata). III. Ejecutar la instrucción. IV. Prepararse para leer la siguiente casilla de memoria (que contendrá la siguiente instrucción), y volver al paso 1 para continuar. La unidad de control ejecutara varias veces este ciclo de cuatro “instrucciones alambradas” a una enorme velocidad. Se llama así a estas instrucciones porque no residen en memoria, ni fueron escritas por ningún programador, sino que la maquina las ejecuta directamente por medios electrónicos, y lo hará mientras este funcionando (mientras este encendida) en una computadora es a razón de cientos de miles (o incluso millones) de veces por segundo. Se ha definido ya el modelo de von Neumann. Ahora se pondrá a funcionar sobre nuestro pequeño programa de ejemplo (que ya esta cargado en la memoria). PASOS PARA LA EJECUCION DE UN PROGRAMA Se describirán todos los pasos con detalle por única vez, para que el lector pueda estudiarlos con detenimiento hasta estar seguro de haberlos comprendido. (obsérvese que este paso es externo, esto es, no forma parte del programa, sino que se tiene que hacer “desde afuera” para iniciara la operación de la computadora) ORTEGA CASTILLO FERNANDO
 * __UNIDAD DE CONTROL__**
 * En virtud de que el programa comienza a partir de la celda numero 10, se debe indicar a la unidad de control que esa celda contiene la primera instrucción. Esto se hace por medio de un apuntador (que forma parte de los circuitos electrónicos de la unidad de control) que recibe el nombre de contador de programa (CP). Así pues, el primer paso debe consistir en apuntar a la casilla 10, y esto se representara por CP-10.
 * La unidad de control ejecutara el paso I e ira a la casilla 10 para leer su contenido, que es21.
 * La unidad de control ejecuta el paso II, con lo que decodifica el 21 recién leído y determina que se trata de una operación CARGA_Ac. En este momento sucede algo de primordial importancia: como la instrucción 21 tiene una longitud de dos celdas cuyo valor se cargara en el acumulador (que en este caso de casualidad también es 21), la maquina deberá ajustar el valor del contador de programa para que este apunte a celda siguiente.

[]

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.
 * EJECUCIÓN DE UNA INSTRUCCIÓ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
 * Ramificación **


 * REFERENCIA **
 * [] **
 * ANTONIO PALOMINO GONZALEZ 7221 **

=Unidad de control= [|memoria principal][|unidad de proceso] [|lógica secuencial][|lógica combinacional]
 * unidad de control**[|unidad central de procesamiento][|Unidad de proceso][|bus de entrada/salida]

//fetch////to fetch//
 * __UNIDAD DE CONTROL__**
 * En virtud de que el programa comienza a partir de la celda numero 10, se debe indicar a la unidad de control que esa celda contiene la primera instrucción. Esto se hace por medio de un apuntador (que forma parte de los circuitos electrónicos de la unidad de control) que recibe el nombre de contador de programa (CP). Así pues, el primer paso debe consistir en apuntar a la casilla 10, y esto se representara por CP-10.


 * La unidad de control ejecutara el paso I e ira a la casilla 10 para leer su contenido, que es21.
 * La unidad de control ejecuta el paso II, con lo que decodifica el 21 recién leído y determina que se trata de una operación CARGA_Ac. En este momento sucede algo de primordial importancia: como la instrucción 21 tiene una longitud de dos celdas cuyo valor se cargara en el acumulador (que en este caso de casualidad también es 21), la maquina deberá ajustar el valor del contador de programa para que este apunte a celda siguiente.
 * La unidad de control ejecuta el paso III, con la que efectivamente efectuara la operación de carga. Por esto, la computadora debe ir a la celda 11 y extraer su contenido, pero ahora ya no lo considera como instrucción si no como dirección por la cual ira a la celda 21 para extraer el valor que contenga.


 * La unidad de control ejecuta el paso IV, para luego ejecutar todo el ciclo de nuevo. Obsérvese que es un ciclo ilimitado, que solo terminara cuando se ejecute la instrucción ALTO. En este caso, el contador de programa se hará igual a 12; esto es, apuntara a la celda numero 12.
 * Se ejecuta (por segunda vez) el paso I de la unidad de control. Como CP=12, se leerá esa celda, que contiene un 57.
 * Se decodifica esa instrucción, que es SUMA_Ac, por lo que la CP se prepara para apuntar a la siguiente celda. (Recuérdese que la instrucción SUMA_Ac ocupa 2 celdas: una para el código de operación y otra para la dirección de la celda cuyo contenido se sumara al acumulador.)
 * Se ejecuta la instrucción 57, con lo que se añade el contenido de la celda 22 al acumulador(la dirección 22 reside en la celda 13, es a la que actualmente apunta el contador de un programa como resultado del paso anterior). Ahora el acumulador contendrá un 12.
 * La CP se actualiza para apuntar a la celda 14, en la cual (y no es casualidad) reside el código de la siguiente instrucción.
 * Se lee la celda 14 y se extrae su código: 96.
 * Se decodifica la instrucción, que es GUARDA_Ac, por lo que el CP sea lista para apuntar a la siguiente celda, que contendrá la dirección de la celda en donde se guardara el contenido del acumulador.
 * Al ejecutarse esta instrucción se deposita el valor del acumulador (12) en la celda numero 23, o sea, se deja el resultado de la suma en la celda que de antemano se había separado para tal fin.
 * La unidad de control regresa al paso I no sin antes actualizar el contador de programas para que apunte a la celda 16 es donde reside la siguiente instrucción.
 * Se lee la celda 16 y se extrae su contenido: 70.
 * Se decodifica esta instrucción, que es ALTO. El CP no se prepara para extraer un dato de la siguiente celda porque la instrucción 70 ocupa una sola celda.
 * Se ejecuta esta instrucción, lo que detiene a la unidad de control y a la maquina. De esta manera se rompe el ciclo de los 4 pasos.


 * Dado el contenido de una celda, la computadora no puede distinguir si se trata de un instrucción o de un dato o dirección.
 * Debido a lo anterior, es responsabilidad de quien maneja la maquina indicarle cual es la celda donde comienza el programa (esto se hizo por medio del paso 0, que se describió externo al programa).
 * Una vez que el contador de un programa apunta a la celda que contiene la primera instrucción, el resto del proceso ocurre de manera automática e invisible para el programador. Esto se debe a los ajustes internos que hace al CP (en el paso II) que a su vez, dependen de la longitud de la instrucción que sé esta ejecutando.

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. 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.
 * EJECUCIÓN DE UNA INSTRUCCIÓN **

JOSE ISACC SIERRA JUAREZ

REFERENCIAS www.fismat.umich.mx/~htejeda/posgrado/unicon.ps

los procesos son gestionados por el sistema operativo y están formados por: Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o más //hilos//, la memoria de trabajo (compartida por todos los hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de ejecución. Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos. El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (//fork//). Los nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el proceso que los ha creado o ser creados en el mismo espacio de memoria. En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso. ARENAS QUIJANO ITZEL
 * Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.
 * Su estado de ejecución en un momento dado, esto es, los valores de los registros de la CPU para dicho programa.
 * Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.
 * Otra información que permite al sistema operativo su planificación.