Anda di halaman 1dari 7

Unidad de Control

Analizamos en este tema la Unidad de Control: el elemento del computador que cumple la
funcin ms importante: enva las seales de control que gobiernan el buen funcionamiento
del mismo. Este tema, que tradicionalmente ha sido la bestia negra para el alumno, ha sufrido
durante los ltimos aos una reduccin paulatina acorde con el incremento de la simplicidad
de las arquitecturas. Actualmente, cuando todas las arquitecturas ISA (juegos de instrucciones)
son de tipo RISC, la Unidad de Control se ha reducido a un circuito combinacional muy simple
cuya funcin se limita a generar seales de control de salida en funcin de los valores de
entrada proporcionados por los opcode y los flags.

1 Introduccin

Analice el siguiente esquema que representa el Ciclo de Instruccin. Por ahora, observe
exclusivamente el diagrama en color azul.

En el tema anterior vimos cmo la va de datos haba sido diseada para que, de forma
automtica, el procesador poda buscar una instruccin, consultar el contenido de dos
registros del banco, e incluso podra aadir los dos bits implcitos a la direccin destino de un
salto J. Esto se consigue mediante la asignacin de valores constantes en el bit read de la
memoria de instrucciones y del banco de registro.
Sin embargo, el flujo de la informacin por la va de datos, a partir de un cierto instante en el
ciclo de instruccin, se ve obligado a tomar decisiones para que el comportamiento se
diferencie segn el cdigo de operacin de la instruccin buscada. Incluso en el caso de la
instruccin BEQ, es necesaria una toma de una decisin posterior.
La funcin de la Unidad de Control es la de enviar las seales que permitan la seleccin del
camino de datos adecuado.
2 La Unidad de Control del procesador monociclo

La unidad de control de un procesador monociclo simple, como el propuesto en el tema
anterior es un simple circuito combinacional con las siguientes caractersticas:
Entradas:
o Bits de Opcode de la instruccin. 6 bits en MIPS, IB31 a IB26 en la
implementacin propuesta.
o Bits de flags (o de estado). En general Z (cero), P (paridad), S (signo), etc. En
nuestra implementacin, slo Z.
Salidas:
o Puntos de control que actan en multiplexores (FB,FC,FDC y FPC en nuestra
implementacin).
o Control de otros dispositivos combinacionales (Extensor del desplazamiento,
Operacin de ALU, etc.). En nuestro procesador, OpALU y EX.
o Control de dispositivos secuenciales. Estas incluyen:
Activacin de seales de lectura de bancos de registros y/o memorias
(como RM).
Activacin de la carga de registros (LPC) o escrituras en el banco de
registro o memoria (como WM y WR)


El diseo interno del circuito combinacional no es objeto de estudio en esta asignatura. Como
en la mayora de los circuitos combinacionales analizados, es ms importante conocer la tabla
de verdad con las respuestas en las salidas a las seales de entradas. En el smil, no
necesitamos conocer el contenido de la caja negra sino la combinacin de luces activadas
que corresponde a cada combinacin de interruptores pulsados.

Pero por otra parte, no podemos realizar una abstraccin total de su contenido. No todas las
seales de salida dependen de todas los valores de entrada. Por ejemplo, el valor WM no tiene
ninguna dependencia del valor Z, por lo que es necesario un anlisis de sus estructura interna,
por la posible implicacin en aspectos de diseo como la temporizacin de la Unidad de
Control.

En la seccin 2.1 se analizarn los valores correspondientes a la implementacin del tema
anterior y en la seccin 2.2 la estructura interna de la Unidad.

Seal de Control Nbits Significado
FPC 2
00 No definido
01SUM1[31:26], IB[25:0]
10 SUM2
11 SUM1
LPC 1 Carga PC
FDC 1
0: IB[20:16] DC
1: IB[15:11] DC
FC 1
0: Dato R C
1: ALU C
WR 1
0: Read op.
1: Write op. & Read op.
FB 1
0: BBanco-Reg BALU
1: EXT(IB[15:0]) DC
OPALU 3
000 fuerza suma en ALU
001 fuerza resta en ALU
011 fuerza OR en ALU
111 operacin en ALU determinada por IB[5:0]
EX 2
00 Extensin a 32 bits con signo
01 Extensin a 32 bits sin signo
10 << 16 bits
Temporizacin de las seales de control
En el procesador monociclo propuesto, la Unidad de Control tiene 14 salidas (vase la tabla) y
7 entradas. Como cualquier circuito combinacional, tiene asociado un retraso, que determina
cunto tiempo tenemos que espera para que la salida tenga un valor estable, para cualquier
cambio en las entradas. Sea t
uc
el valor de retraso de la Unidad de Control. Ese es el tiempo
que tendremos que esperar, despus de haber buscado la instruccin (en t=t
spc
+t
memI
), para
empezar a conocer los valores de las seales de control.
Considerando el flujo de datos de nuestro diseo, as como cualquier posible instruccin, la
primera seal de control que se utiliza es la combinacin EX, seguida de FB. Por esta razn,
hasta que no transcurre t = t
spc
+ t
memI
+ t
uc
no ser posible determina el tipo de extensin
del desplazamiento que debemos aplicar.
El mismo razonamiento se podra aplicar al resto de seales de control, y de esta forma
desgranaramos la temporizacin exacta de todas ellas para esta implementacin en particular.
Sin embargo, hay algunas caractersticas temporales generales que se pueden aplicar a
cualquier procesador monociclo. Estas son:
Cada salida de la UC tiene sus propias dependencias de las entradas y sus propios
retrasos. As, si WM no depende de Z, no necesitamos esperar a Z para conocer su
valor. O si una seal es constante, su retraso se puede considerar nulo.
La mayora de las seales de control empiezan a actuar tan pronto como se estabilicen,
sobre los dispositivos a los que estn conectados, a excepcin de las seales que
actan para escribir en dispositivos secuenciales (LPC, WM y WR). En estos casos, las
seales se sincronizan con el reloj para que su accin tenga lugar exactamente al final
del ciclo de reloj.
En general, los retrasos de la Unidad de Control se intentan ocultar con el retraso de
otros dispositivos. Esto se hace mediante trabajo en paralelo. As, mientras la Unidad
de Control hace su trabajo (descodificacin), en nuestro procesador MIPS se
aprovecha para consultar dos registros A y B, aunque no sean necesarios!
Nota: Lo de ir buscando por si hace falta ha sido muy frecuente en el diseo de
cualquier procesador, aunque ltimamente, y por problemas de consumo energtico,
se estn revisado muchas de las decisiones adoptadas.
Un ejemplo: la instruccin BEQ
La siguiente figura esquematiza los aspectos temporales de la instruccin BEQ. Se han
considerado los mismos retrasos del ejercicio de temporizacin del tema anterior (400ps para
la memoria, 200 el banco de registros, 30 multiplexores, etc.). Observe que el camino crtico en
esta instruccin es el determinado por el clculo de la condicin:
1 A los 400ps conocemos la instruccin, por lo que a los 600ps podemos conocer los
contenidos de los registros a comparar.
2 Mientras se buscaban los registros, la UC (zona inferior) ha tenido tiempo de
calcular los bits de control FB y OpALU, por lo que la comparacin de registros en
la ALU no debe esperar la llegada de seales de control.
3 A los 750ps conocemos por tanto el flag Z. La UC vuelve a intervenir, para calcular
FPC a partir de Z.
4 Muy poco despus, a los 770ps la UC conoce FPC. En el multiplexor de PC tenemos
esperando a los dos candidatos (la siguiente instruccin y el destino del salto), que
llegaron all mucho antes (en 100ps y 520ps) pero han tenido que esperar la
decisin de UC.
5 A los 800ps el prximo valor de PC se ha estabilizado.


En otras secciones de la va de datos observamos cmo,
el clculo del desplazamiento sufre un retraso (400+20), debido a la descodificacin de
las seales Ex. Cuando llega al sumador (arriba), no tiene que esperar.
El otro operando en dicha suma (PC+4) est disponible desde t=100, aunque tiene que
esperar a t=420 para empezar la suma, cuyo resultado est en t=520
El futuro valor de PC si no se cumple la condicin, (PC+4) est disponible desde t=100,
aunque debe esperar la decisin de la UC, hasta 770ps.

2.1 Clculo de las seales de control
En esta seccin se analizan una a una las ocho instrucciones del procesador propuesto de
forma similar al estudio realizado en la seccin 2 del tema 3. En este caso, nos centramos
exclusivamente en el estudio de los valores de las seales de control y estado. El objetivo es
elaborar la tabla de verdad a la que responde la Unidad de Control.
Estudiamos en estos apuntes el caso de una instruccin (BEQ). El resto se estudia con las
transparencias de clase. El resultado final se muestra en la figura:



Control de instrucciones BEQ (opcode 000100)
Para la bsqueda de instruccin, la memoria de instrucciones utiliza valores
constantes, por lo que la Unidad de Control no acta. Lo mismo ocurre para la consulta
de registros.
El desplazamiento, al ser un nmero con signo, debe extenderse con la opcin EX=00
La operacin de ALU debe ser una resta, para comparar registros, luego OpALU=001

En esta instruccin no se guarda ningn valor en los registros del banco, por lo que
WR=0. Por esta misma razn, da igual los valores de RM, FC y FDC, luego
RM=FC=FDC=X
No se escribe un valor en la memoria, por lo que WM=0
FB=0 porque el sustraendo es el puerto B (y no el desplazamiento)
El valor que se almacena en PC se decide de la siguiente forma:
o Si Z=1 (los registros son iguales) FPC=10 (salta a PC+4+despl,00)
o Si Z=0 (los registros son diferentes) FPC=11 (salta a PC+4)
(esta situacin se describe con la expresin lgica FPC=1

)
La salida del multiplexor se almacena en PC con la seal LPC=1 (esto es igual en todas
las instrucciones de nuestro procesador, al igual que lo eran las seales de control de
la memoria de instrucciones)

2.2 Diseo de las seales de control
Como ya dijimos, el diseo de las seales de control de nuestro dispositivo no es objeto de
estudio en esta asignatura, aunque siempre resulta interesante conocer cmo se hace. En
general, hay dos alternativas de diseo: la acadmica (en dos pasos) y la real en un solo
paso.
La alternativa acadmica es ms lenta, aunque su diseo es ms obvio. Utiliza dos circuitos
combinacionales conectados en serie:

El primer circuito genera 8 seales intermedias, cuyos nombres son las instrucciones, y que
toman el valor lgico 1 cuando los bits IB31 a IB25 contienen el nombre binario de la
instruccin correspondiente. En caso contrario, las seales intermedias valen cero.
El segundo circuito se puede construir mediante una simple descripcin lgica de las funciones
de salida:
X: No importa en operaciones de escritura
El valor no importa nunca debe ser la opcin elegida para controlar la
escritura en el banco de registro, en la memoria, o en un registro. Es decir, en
los circuitos secuenciales es necesario especificar claramente si el contenido se
va a modificar o no. Precisamente, cuando el contenido de un dispositivo de
almacenamiento no se va a modificar, entonces s que da igual qu valores se
estn preparando en sus entradas.
En el ejemplo RM=FC=FDC=X porque WR=0, mientras que FPCX porque LPC=1
Por ejemplo, la seal OPALU1 es 1 cuando la instruccin es OpALU o la instruccin es ORI. Y as,
con todas, se construye la tabla que define la conexin de puertas del segundo circuito:

La alternativa que denominamos realista no necesita la generacin de seales intermedias.
Intenta reducir costes y mejorar el rendimiento mediante tcnicas ms complejas de diseos
de circuitos lgicos (como el algoritmo Quine-McCluskey)

As, se obtienen seales en general muy simples, como LPC=1, WM=IB
31
IB
29
, aunque no
siempre responden a una expresin lgica obvia.
Conclusiones
La Unidad de Control de los procesadores RISC es uno de los elementos ms simples y a la vez
ms esenciales del computador. Su objetivo es generar las seales que permiten definir el
recorrido de los datos en cada ciclo de instruccin, por lo que en general es un dispositivo
combinacional que responde a una simple tabla de verdad.
Aunque en este tema nos hemos limitado a la descripcin de un procesador monociclo, en las
arquitecturas multiciclo o segmentada su complejidad no es mucho mayor. Tal vez sean
necesarias seales adicionales, para saber en qu etapa se encuentra una determinada
instruccin, pero tambin en estos casos su diseo se reduce a la implementacin de tablas de
verdad.
FPC1 = OpALU V ADDI V ORI V LW V SW V LUI V BEQ
FPC0 = OpALU V ADDI V ORI V LW V SW V LUI V (BEQ Z) V J
LPC = OpALU V ADDI V ORI V LW V SW V LUI V BEQ V J
WR = OpALU V ADDI V ORI V LW V LUI
FDC = OpALU
FC = OpALU V ADDI V ORI V LUI
EX0 = ORI
EX1 = LUI
FB = ADDI V ORI V LW V SW V LUI
RM = LW
WM = SW
OPALU2 = OpALU
OPALU1 = OpALU V ORI
OPALU0 = OpALU V ORI V BEQ