Вы находитесь на странице: 1из 10

Apuntes de Principios de Computadores

12 de mayo de 2011

Captulo 1

Unidad de Control
1.1. Unidad de control

Antes de entender cmo funciona la unidad de control, procederemos a establecer unos conceptos previos.

Ciclo de instruccin: Tiempo que tarda la CPU en ejecutar una instruccin. Una
mquina simple funciona ejecutando repetidamente el ciclo de instruccin. Es decir, ejecutamos una instruccin tras otra. El ciclo de instruccin de la mquina IAS constaba de dos subciclos: a buscar a memoria y se carga en un registros de la unidad de control.

Ciclo de bsqueda de instruccin: Durante el ciclo de bsqueda la instruccin se va Ciclo de ejecucin de la instruccin: Durante el ciclo de ejecucin, se interpreta el

cdigo de operacin (opcode) y se generan las seales necesarias para que se realice la operacin que indica la instruccin.

Sin embargo, es necesario detallar ms esta descripcin. Cada uno de estos pasos implica la realizacin de muchas operaciones ms simples en el interior de la CPU. Cada una de esas operaciones ms simples se denomina microoperacin o microrden. Las microoperaciones son las operaciones ms pequeas que puede realizar un procesador y pueden llevar a cabo una de las siguientes acciones: Transferencia de datos entre registros, Transferencia de datos entre registros y dispositivos de E/S en ambas direcciones y Realizacin de una operacin aritmtica o lgica. Al comienzo de cada ciclo de instruccin es necesario ir a memoria a buscar una instruccin. Normalmente esto se hace a travs de un registro denominado Contador de Programa (PC, program counter). El contador de programa debe incrementarse cada vez que se lee una instruccin para que quede preparado para leer la siguiente. Una vez leda de la memoria la instruccin, sta debe pasar a travs del bus de datos hasta un registro de la unidad de control denominado Registro de instruccin (IR, Instruction Register). 1

CAPTULO 1.

UNIDAD DE CONTROL

Este esquema de slo dos subciclos para cada ciclo de instruccin es demasiado simple. Un esquema ms detallado es el siguiente: 1. Clculo de la direccin de la siguiente instruccin a ejecutar: Normalmente se lleva a cabo aadiendo un valor jo a la direccin de la instruccin actual. Si la mquina es de 8 bites, se suma un 1 y si es de 32 bits se suma 4. Esto es as excepto en las situaciones en las que se produce un salto en el programa. En ese caso hay que sumar una cantidad distinta. 2. Bsqueda de la instruccin (Instruction Fetch). La CPU lee la instruccin desde memoria y la guarda en el IR. 3. Decodicacin de la instruccin (Instruction Decode). Extrae el cdigo de operacin que nos indica qu operacin hay que realizar y la direccin de los operandos (puede que esta direccin no est totalmente determinada en este punto y requiera algn tipo de clculo). 4. Clculo de la direccin de los operandos. Si la instruccin hace referencia a operandos que se encuentran en memoria o en algn dispositivo de E/S es necesario calcular la direccin donde efectivamente (direccin efectiva) se encuentan los mismos. 5. Bsqueda de operandos. Lee la memoria o el dispositivo de E/S y obtiene los operandos que sern escritos en algn registro de la CPU. 6. Ejecucin de la instruccin. LLeva a cabo la operacin especicada en el opcode con los operandos ledos. 7. Almacenamiento del operando. Guarda el resultado en memoria o a un dispositivo de E/S. En una instruccin dada es posible que algunas etapas no aparezcan (por ejemplo, en una operacin de salto no hay que almacenar ningn resultado). Tambin es posible que algunas etapas ocurran ms de una vez. Por ejemplo, en una operacin aritmtica habr que leer dos operandos de memoria. Para ser realistas, todo ordenador debe admitir interrupciones en el ciclo de instruccin. Una interrupcin se produce, por ejemplo, cada vez que se pulsa una tecla en el teclado. Aunque el ordenador est llevando a cabo algn clculo debe permitir guardar dicha tecla en memoria antes de que se pierda. Sin embargo, en el esquema anterior esta posibilidad no aparece. Para ello sera necesario aadir una etapa de comprobacin de interrupcin, posterior a la de ejecucin de la instruccin y almacenamiento de operando. De esta forma, una vez ejecutada la instruccin actual, la CPU comprueba si hay alguna solicitud de interrupcin. En caso armativo pasa a atender dicha interrupcin y a la vuelta contina con la busqueda de la siguiente instruccin. Es necesario tener en cuenta que la direccin de la siguiente instruccin se calcula tan pronto como se pueda

CAPTULO 1.

UNIDAD DE CONTROL

durante la ejecucin de la actual, por lo que normalmente se va directamente a buscar la instruccin siguiente una vez se ha guardado el resultado en memoria. Agrupando algunas etapas anteriores podemos considerar que un ciclo de instruccin se divide en cuatro subciclos: 1. Ciclo de bsqueda de instruccin 2. Ciclo de Decodicacin. 3. Ciclo de Ejecucin 4. Ciclo de preparacin para la siguiente instruccin.

mos ejecutar el ciclo de bsqueda de instruccin. Para traer una instruccin de memoria es necesario indicarle en qu direccin se encuentra la instruccin que queremos leer. Esto se lleva a cabo guardando dicha direccin en un registro denominado Memory Address Register (MAR). A continuacin la memoria responde poniendo el contenido de dicha direccin de memoria en el bus de datos por donde debe llegar a algn lugar donde almacenarse. Este lugar es el denominado Memory Data Register (MDR). A continuacin el dato debe escribirse en el Instruction Register (IR), un registro de la CPU que permite interpretar la instruccin (saber la operacin que hay que hacer y sobre qu operandos). Adems, hace falta incrementar el registro Program Counter (PC) para que almacene la direccin de la siguiente instruccin a ejecutar. Como esta accin es independiente totalmente del movimiento de la instruccin desde la memoria al registro de instruccin, se puede llevar a cabo simultneamente a cualquiera de los pasos anteriores. Podemos resumir este ciclo en la siguiente tabla Etapa Accin PC MAR Memoria MDR PC PC + n t3 MDR IR donde n es el nmero de bytes de cada instruccin. La microoperacin tercera (incrementar el contador de programa) tambin poda haberse llevado a cabo en paralelo con la transferencia del MDR al IR, sin afectar a la operacin de bsqueda de instruccin en absoluto. Para poder agrupar dos microoperaciones es necesario tener en cuenta: t1 t2

Ciclo de bsqueda de instruccin. Al comienzo de cada ciclo de instruccin debe-

1. Si existe una secuencia lgica, sta debe mantenerse. Por ejemplo, La transferencia del PC al MAR siempre debe preceder a la transferencia desde memoria al MDR. Por una razn lgica: Para transferir un dato necesitamos saber en primer lugar en qu posicin de memoria se encuentra dicho dato. 2. Si dos microoperaciones van a efectuarse en paralelo, es necesario que no haya conicto entre ellas. No podemos utilizar un mismo registro para dos microoperaciones que se van a llevar a cabo en paralelo (Por ejemplo Memoria MDR y MDR

CAPTULO 1.

UNIDAD DE CONTROL

IR no pueden hacerse en paralelo). Tampoco pueden hacer uso del bus las dos microoperaciones (Por ejemplo (Memoria MDR y MDR IR no pueden llevarse a cabo en paralelo porque ambas utilizan el bus).

nmero de bits necesario para almacenar una instruccin completa. El formato de una instruccin debe indicar cuantos bits estn reservados al opcode (codigo de operacin) y especicar que bits estan dedicados a almacenar operandos. La parte del cdigo de operacin se decodica para saber que operacin llevar a cabo. Por ejemplo si nuestra mquina tiene 32 operaciones posibles y el opcode es 01100, la operacin a realizar es la nmero 12, que puede equivaler por ejemplo, a una suma (ADD). Con respecto a los operandos puede ocurrir que las direcciones esten en modo inmediato, directo o indirecto. En modo inmediato, cada uno de los operandos deber ser transferido directamente a un registro. En modo directo la direccin que se encuentra en el IR es directamente la direccin de memoria donde se encuentra el operando. En ese caso, el campo de direccin del IR se debe escribir en el MAR, entonces se inicia un ciclo de lectura de memoria que pondr el contenido de la memoria en el MDR y ste se deber escribir a un registro. En el caso de que la direccin que se encuentra en el IR sea indirecta el proceso es similar, pero una vez escrito el resultado de memoria en el MDR, esta es la direccin en la que realmente se encuentra el dato, por lo que se vuelve a escribir en el campo de direccin del IR, desde donde habr que volver a buscar dicho operando a memoria. Es decir, para un acceso indirecto necesitamos dos accesos a memoria. En cualquier caso (tanto en directo como indirecto), una instruccin dada puede tener uno, dos o hasta tres operandos (slo en mquinas muy especcas). Por tanto, una instruccin con dos operandos en modo directo requiere dos accesos a memoria en una mquina de Von Neumann y cuatro si estamos en modo indirecto. En resumen Fase Modo directo Modo indirecto 1 2 3 4 5 6 IR (Direccin) MAR Memoria MDR MDR RX

Ciclo de Decodicacin de la instruccin El registro de instruccin contiene el

 

IR (Direccin) MAR Memoria MDR MDR IR (Direccin) IR (Direccin) MAR Memoria MDR MDR RX

 

Ciclo indirecto

 

Ciclo bsqueda operando directo

Los ciclos de bsqueda de instruccin e indirecto son simples. Tienen un nmero pequeo de instrucciones y se repiten las mismas operaciones cualquiera que sea la instruccin. Sin embargo, el ciclo de ejecucin puede ser diferente de una instruccin a otra. Es ms, debe ser diferente porque si no estaramos repitiendo una instruccin.

Ciclo de Ejecucin

Suma :

CAPTULO 1.

UNIDAD DE CONTROL

Supongamos la instruccin ADD R3 , X que suma el contenido de la posicin X de memoria al registro R3. La secuencia de microoperaciones es: Fase 1 2 3 Modo directo IR (Direccin) MAR Memoria MDR R3 + MDR R3

Ciclo Bsqueda de operando Bsqueda de operando Ejecucin de la instruccin

Ciclo de Almacenamiento del operando En este punto, el resultado de la suma se


encuentra en el registro R3. Para evitar que se pierda es necesario almacenarlo en alguna posicin de memoria. Fase 1 2 2 Modo directo IR (Direccin) MAR R3 MDR MDR Memoria

 

Ciclo Almacenamiento de operando Almacenamiento de operando Almacenamiento de operando

En este caso hemos optado por guardar el resultado en la misma posicin que se encontraba el operando X. En otro caso sera necesario saber donde se encuentra la direccin donde se piensa guardar el resultado.
1.2. Funcionamiento de la Unidad de Control

La unidad de control debe ejecutar las microoperaciones en el orden adecuado para que el resultado sea el deseado. Hay dos conceptos involucrados. El primero de ellos es conocido como secuenciacin y corresponde a la temporizacin de cada una de las microoperaciones y el segundo es la ejecucin de cada una de ellas. Para poder cumplir su misin, la unidad de control necesita un reloj que marque los tiempos de las diferentes microoperaciones. Adems del IR, es necesario un registro que guarde informacin sobre el estado del procesador y resultado de las operaciones aritmticas. La parte de control del bus genera seales de control que debe pasar a la UC. Como resultado de su operacin la UC genera seales de control tanto internas al procesador como hacia el bus de control. Un concepto fundamental para comprender el funcionamiento de la unidad de control es el de camino de datos. Podemos considerar el camino de datos como el conjunto de elementos necesarios para que se puedan llevar a cabo las instrucciones.

Construccin de un camino de datos simple Comencemos reexionando sobre los


elementos que necesitamos: Debemos poder guardar las instrucciones de los programas (1). Para ello es necesario una unidad de memoria que guarde las instrucciones en unas celdas tal

CAPTULO 1.

UNIDAD DE CONTROL

que si damos la direccin de una celda podamos recuperar la instruccin almacenada en ella. Debemos poder guardar la direccin de la prxima instruccin (2). De esta manera, cuando se d la orden de leer la siguiente instruccin sabremos que celda de memoria hay que leer. Este elemento de memoria se denomina Contador de programa (PC, program counter). Es necesario incrementar el PC cada vez que se lea una instruccin para que apunte a la siguiente instruccin. Para ello hace falta un sumador (3). Estos tres elementos son necesarios para ejecutar cualquier instruccin. Para ello siempre es necesario cargar la direccin de la instruccin en el contador de programa, ir a memoria, leer dicha instruccin e incrementar el contador de programa para que apunte a la siguiente instruccin. No obstante, hasta el momento no hemos podido hacer nada que involucre datos. Para poder realizar instrucciones de tipo aritmtico lgico es necesario considerar un banco de registros (4) (Estructura formada por varios registros, donde se puede leer o escribir en cualquiera si especicamos su direccin). Para las instrucciones de tipo aritmtico lgicas es necesario considerar el banco de registros y la ALU (5). La ALU contiene una lnea de control que permite especicar la operacin a realizar entre dos operandos de 32 bits para dar un resultado de 32 bits. Para las instrucciones de carga y almacenamiento, adems es necesario considerar la unidad de memoria de datos (6) y la unidad de extensin de signo del campo de desplazamiento de 16 bits a un valor con signo de 32 bits. La memoria de datos se lee con instrucciones load y se escribe con instrucciones store, por lo que deben exister seales de control de lectura y escritura, una entrada de direccin y una entrada de datos para escribir en memoria. Si intentamos disear la unidad de control de la forma ms simple posible debera poder ejecutar todas las instrucciones en un solo ciclo. Esto signica que ningn elemento del camino de datos puede utilizarse ms de una vez por instruccin. Una implicacin inmediata es que la memoria de instrucciones ha de estar separada de la memoria de datos.

Ejemplos de caminos de datos


trucciones consta de los siguientes elementos: Contador de programa (1), Memoria de instrucciones (2) y Sumador (3). La salida del sumador (3) se realimenta al contador de programa.

Bsqueda de instrucciones El camino de datos utilizado en la bsqueda de ins-

Instrucciones tipo R Las instrucciones tipo R tienen 3 operandos tipo registro. Cada instruccin lee dos operandos y escribe el resultado en otro registro. Cada lectura de registro requiere introducir la direccin del registro que se quiere leer por Reg. de

CAPTULO 1.

UNIDAD DE CONTROL

3
Multi Plexor
Sumador

Extensin de Signo

Sumador Resultado ALU

2 1
PC Direccin de lectura

4
Control de la ALU 3 Reg. de Lectura 1 Reg. de Lectura 2 Dato Ledo 1 Escribir Mem Leer Mem

6
Memoria de Instrucciones Reg. de Escritura Instruccin Escribir Extensin de Signo 32 ALU

Direccin

Dato Ledo
Multi Plexor

Dato a Escribir

Dato Ledo 2 Multi Plexor

Memoria de Datos

16

Dato a Escribir

Figura 1.1: Camino de datos sencillo para la arquitectura MIPS


Lectura 1

2 y el resultado se obtiene por Dato Ledo 1 2. Cada escritura de registro requiere introducir la direccin del registro que se quiere escribir en Reg. de Escritura y el dato por Dato a Escribir. Puesto que las direcciones de los registros se encuentran en la instruccin, estas entradas se toman de la instruccin que sale de la Memoria de instrucciones. El camino de datos consta, fundamentalmente, de los siguientes elementos: Banco de registros (4) y ALU (5) que permite llevar a cabo la operacin indicada en la instruccin.

Instrucciones load-store El camino de datos para las instrucciones de este tipo consta de los siguientes elementos: Banco de registros (4), Extensin del signo (7), ALU (5) y Memoria de datos (6). La salida de la memoria de datos se realimenta por Dato a Escribir. Si se hace un load, el valor ledo de memoria debe escribirse en el registro especicado. Si se hace un store, es necesario indicar la direccin de memoria donde se va a escribir, el dato a escribir y seales de control de lectura y escritura.
elementos: Contador de programa (2), Banco de registros (4), Extensin del signo (7), ALU 5), Desplazador de 2 bits a la izqda (Extensin del signo) y Sumador. El resultado de la ALU (5) se utiliza para que la lgica de control de salto determine si la condicin se cumple o no. Las instrucciones de salto condicional precisan que se tenga en cuenta: 1. Que la direccin utilizada como base para el salto ser la direccin de la siguiente

Instrucciones de salto condicional El camino de datos consta de los siguientes

CAPTULO 1.

UNIDAD DE CONTROL

Figura 1.2: Esquema de la unidad de control instruccin (valor almacenado en el PC). 2. Que el campo de desplazamiento se desplace 2 bits hacia la izquierda para que se corresponda con una palabra. Esto incrementa el tamao efectivo de dicho campo en un factor 4. 3. Adems, es necesario determinar si la siguiente instruccin a ejecutar es la siguiente en orden secuencial a la que se est ejecutando o la situada en la direccin de salto. Si la condicin se cumple, la direccin calculada del salto se escribe en el PC y se dice que se ha tomado el salto. Si la condicin no se cumple, en el PC se escribir la direccin de la instruccin actual incrementada oportunamente (+4). En este caso se dice que no se ha tomado el salto. Los dos primeros factores vienen dados por la propia arquitectura del repertorio de instrucciones. Para calcular la direccin destino del salto, el camino de datos incluye una unidad de extensin del signo (7) y un sumador.
1.3. Diseo de la unidad de control

La unidad de control genera el valor de todas las seales dependiendo del valor de las siguientes entradas: cdigo de operacin (opcode), que se encuentra en IR. seales de interrupcin reloj (seal de temporizacin) Con esta informacin la unidad de control se encarga de generar las seales de control para la ejecucin de cada instruccin. Antes de disear la unidad de control es necesario obtener la mquina de estados que dene el funcionamiento de dicha unidad. Cada estado de la mquina se corresponde con un ciclo de reloj, durante el cual la unidad de control debe mantener activadas las seales de control necesarias para ejecutar la operacin elemental correspondiente. Existen dos formas de abordar el diseo de la Unidad de Control: unidad de control cableada y unidad de control microprogramada

CAPTULO 1.

UNIDAD DE CONTROL

La unidad de control cableada se construye mediante puertas lgicas con mtodos de diseo de circuitos combinacionales y secuenciales. La unidad de control microprogramada utiliza una memoria de control para almacenar el estado de las diferentes seales de control durante cada uno de los ciclos de cada instruccin. En este tipo de unidad de control se denominan: Microinstruccin: conjunto de bits que identican las seales de control que debe generar la unidad de control en cada ciclo de reloj. Microprograma: secuencia ordenada de microinstrucciones que debe generar la unidad de control para ejecutar cada instruccin mquina. Firmware o Microcdigo: conjunto de todos los microprogramas de un computador. Una unidad de control microprogramada incluye: Una memoria de control que almacena todas las microinstrucciones correspondientes al juego de instrucciones del computador. Un Secuenciador que se encarga en cada ciclo de reloj el secuenciador de generar la direccin de la memoria de control donde se encuentra almacenada la microinstruccin a ejecutar en ese ciclo de reloj.

Вам также может понравиться