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

UNIVERSIDAD NACIONAL DE INGENIERIA

RECINTO UNIVERSITARIO SIMON BOLIVAR Facultad de Electrotecnia y Computacin Departamento de Arquitectura y Sistemas Folleto de Arquitectura de Mquinas Computadoras II Curso 2013

Preparado por:

Ing. Jos Daz Chow


UNIDAD V

Managua, Noviembre 2013

INDICE DE CONTENIDO

5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7

LA UNIDAD DE CONTROL LA FUNCION DE CONTROL OPERACIONES BASICAS DE CONTROL PASOS DE CONTROL PARA LA EJECUCION DE UNA INSTRUCCION UNIDAD DE CONTROL FIJO UNIDAD DE CONTROL MICROPROGRAMADA MICROPROGRAMA Y MICRORRAMIFICACIONES APLICACIONES DE LA MICROPROGRAMACION

1 1 3 4 9 12 19 22

Arquitectura de Mquinas Computadoras II

5. LA UNIDAD DE CONTROL
5.1 LA FUNCION DE CONTROL
Todas las operaciones del procesador son coordinadas por la unidad de control. Aunque este objetivo puede resultar muy complejo, los diseadores enfrentan esa complejidad, simplificando el trabajo de la unidad de control a sincronizar la ejecucin de pequeas operaciones denominadas operaciones de control (la antigua tctica de divide y vencers). El trabajo del CPU consiste en ejecutar instrucciones y por tanto el trabajo de la unidad de control consiste en ejecutar las operaciones de control requeridas para ejecutar cada instruccin. La unidad de control o CU (por sus siglas en ingls), realiza estas operaciones mediante la activacin y desactivacin de seales, que se transmiten a travs de lneas de control. Por ejemplo, para realizar una lectura en memoria, la CU debe activar una seal habilita la memoria y adems otra seal que indique el tipo de funcin de memoria desea realizar, la cual puede ser Lectura o Escritura. En este caso especfico: lectura. Cuando la lectura se ha realizado, la memoria (ms bien su controlador) activa una seal de terminacin de la funcin de memoria: MFC (Memory Function Completed) para indicar al procesador que el dato solicitado est disponible en el bus de datos (y en el MDR, en nuestro modelo de procesador). Es necesario notar, que la CU tiene tanto seales de entrada como de salida, por ejemplo la seal READ es de salida y la seal MFC es de entrada. Otro ejemplo ms conocido de seal de entrada puede ser la solicitud de interrupcin (INT) que se activa cuando un dispositivo requiere la atencin del procesador. Como la unidad de control debe sincronizar todos los elementos del CPU que son sncronos (por ejemplo, los registros), requiere de un reloj que genere una base de tiempo para activar o desactivar estas seales en cada pulso de reloj. El conjunto de acciones u operaciones de control que la UC realiza en un mismo pulso de reloj se denomina Paso de control. Para poder entender el funcionamiento de la CU, requerimos definir a detalle la estructura del procesador: ALU, registros de trabajo y de propsito general, as como la estructura de interconexin de los componentes dentro del procesador. Para efectos didcticos vamos a recurrir nuevamente a nuestro modelo sencillo de procesador con un slo bus comn, que se muestra en la figura 5.1. Ntese la existencia de registros auxiliares de trabajo como Y, Z y SOURCE que son inaccesibles al programador y se usan para almacenar datos temporalmente entre pasos diferentes de control. Existen tambin procesadores con mltiples buses internos que mejoran el desempeo de la ejecucin y que se ilustrarn ms adelante.

CU
DECODIFICADOR

IR

R0

PC
Bus de Direccin

MAR

MEMORIA

MDR
Bus de Datos

Y
Y Lneas de Control ALU

source

ALU

Figura 5.1. Organizacin simple de Procesador con bus nico


Ing. Jos Daz Chow Pgina 1

. . .
Rn-1 SP

Arquitectura de Mquinas Computadoras II

En tal arquitectura de bus comn, las salidas de los componentes deben estar aislados galvnicamente del bus para evitar problemas. Por ejemplo, dos registros que tengan algn nsimo bit con potenciales lgicos opuestos podran exponer las lneas del bus a voltajes con diferente potencial provocando prdida del valor escrito (en el mejor de los casos) e incluso hasta un cortocircuito que podra daar componentes. Para evitar esto, los registros del procesador estn aislados del bus mediante compuertas de alta impedancia o buffers tri-estado. El funcionamiento de tales buffers puede concebirse como compuertas direccionales que permiten el paso de la corriente en una sola direccin cuando su lnea de control se activa. Cuando la lnea de control del buffer est inactiva, separa la salida del circuito gracias a su muy alta impedancia. Imaginemos que funciona como una especie de switch que permite al dato salir al bus o no, en dependencia del valor de la entrada de control. Un esquema de tales compuertas se ilustra en la figura 5.2. Cada registro, en un sistema de interconexin por buses debe contar, por tanto, con un mecanismo para controlar su entrada y su salida. Normalmente se emplean las compuertas de alta impedancia mencionadas en el prrafo anterior. En la entrada puede usarse un MUX (recordemos de la unidad anterior la construccin del GPR) en lugar de una compuerta de alta impedancia. La unidad de control, tendra a su cargo, el coordinar las entradas y las salidas de cada registro, para lo cual empleara las lneas de activacin de tales compuertas. Por ejemplo, para un registro Ri, La compuerta de entrada se activa mediante la seal Riin. Supongamos que nuestras compuertas se activan con lgica positiva, entonces, si esta seal Riin est en 0 lgico, la compuerta est bloqueada o en alta impedancia, evitando cambios en el contenido del registro, pero cuando est en 1 lgico, permite que el contenido del bus se cargue al registro Ri. La compuerta de salida es activada por la seal Riout, Si esta seal est en un 0 lgico, asla la salida del registro del bus, pero si est en 1 lgico PC R0 escribe el contenido de Ri en el bus. x x
in in

Es clave comprender que no es permitido activar dos compuertas de salida en el mismo instante de tiempo (o pulso de reloj del procesador), pues no tiene sentido, lo que lograramos en corromper los dato o posiblemente hasta un cortocircuitos en algunas lneas del mismo. Por otro lado, s podemos copiar el contenido del bus en diferentes registros a la vez, es decir, podemos activar las seales Riin de varios registros en un mismo paso de control, pero slo una seal Riout sobre un mismo bus.

PC

R0

x
PCout Yin

x
R0out R1in

x
Y

x
R1

x
R1out R2in X

x
R2

ALU

Zin

x
Z

x
R2out

Zout

Figura 5.2. Manejo de Registros por compuerta

Pgina 2

Ing. Jos Daz Chow

Arquitectura de Mquinas Computadoras II

5.2 OPERACIONES BASICAS DE CONTROL


En nuestro modelo sencillo de procesador y en muchos procesadores reales, una instruccin no puede realizarse de una sola vez en un nico pulso de reloj, por limitaciones de diseo u otras razones fsicas como las comentadas en el prrafo anterior respecto al bus; sino que se requiere de varios pasos de ejecucin. En cada uno de estos pasos se realiza una o ms operaciones bsicas. Para que se realice cada una de estas operaciones se deben activar una serie de seales de control (como las de las compuertas de los registros) y apagar otras, de forma que la accin deseada se logre en ese instante. Cada uno de estos pasos se ejecuta en un ciclo de reloj y se denomina paso de control. Como hemos dicho: una instruccin se ejecuta en varios pasos de control. En cada paso de control se ejecutan una serie de operaciones bsicas. La CU debe poder controlar todas estas operaciones bsicas en funcin de los pasos de control. Ejemplos de las operaciones bsicas primordiales de la unidad de control, son: Transferir el contenido de un registro a otro. Leer o escribir una palabra en la memoria. Ejecutar una operacin de la ALU. Incrementar el PC. Modificar el PC. Verificar el estado de las solicitudes de interrupcin. Verificar / establecer el estado de las banderas y cdigos de condicin. Limpiar, verificar o establecer bits especficos de registros auxiliares (como Y) Decodificar una instruccin.

Veamos ahora, por ejemplo, qu acciones o pasos de control se deben realizar para transferir valores entre registros. En el caso especfico de dos registros, supongamos que deseamos trasladar el contenido del registro R1 a R2, para esto se requieren las siguientes acciones que se ejecutan en un solo paso de control: Habilitar la compuerta de salida de R1 para poner su contenido en el bus Habilitar la compuerta de entrada de R2 para permitir que el contenido del bus se copie en l.

De forma simblica podemos escribir: Paso 1 Acciones R1out, R2in

Ing. Jos Daz Chow

Pgina 3

Arquitectura de Mquinas Computadoras II

Otra tarea tpica durante la ejecucin es la realizacin de una funcin de la ALU, por ejemplo, sumar R1 + R2 (R2 R1 + R2). Para esto se necesita: Poner el valor de R2 en el bus mediante R2out Leer el valor del bus en el registro auxiliar de ALU Y conectado al puerto Y de la misma. Poner el valor de R1 en el bus mediante R1out Activar la operacin suma (ADD) de la ALU y activar Zin para guardar en este registro auxiliar de la ALU el resultado Poner el valor de Z en el bus mediante Zout Copiar el valor del bus en R2

Formalmente: Paso Acciones 1 2 3 R2out, Yin R1out, ADD, Zin Zout, R1in

5.3 PASOS DE CONTROL PARA LA EJECUCION DE UNA INSTRUCCION


Anteriormente en nuestro curso se ha mencionado que la tarea de un procesador secuencial como el nuestro, es ejecutar constantemente un ciclo de instruccin. En este ciclo de instruccin existen dos fases: carga (fetch) y ejecucin (execute). En la primera se trae la prxima instruccin a ejecutar desde la memoria y en la segunda se ejecuta. Ntese que la fase fetch es idntica para todas las instrucciones pero la fase execute difiere para las distintas instrucciones. Una tarea importante en el diseo de la CU de todo procesador es establecer la estrategia de ejecucin, es decir, qu pasos generales seguir el procesador para ejecutar las instrucciones. Esta estrategia est ntimamente ligada con la arquitectura y la organizacin de cada procesador, por lo cual en nuestro curso, nos ajustaremos a nuestro modelo de procesador secuencial sencillo. Desde el punto de vista de arquitectura, debe definirse el conjunto de instrucciones, enfatizando en los modos de direccionamiento y cmo se calcula la direccin efectiva y obtiene el operando, as como el diseo del formato de instruccin y forma de almacenamiento en la memoria. Desde el punto de vista organizativo, interesa definir qu registros de trabajo se emplearn para auxiliar en las operaciones y en qu orden se realizarn stas. Nuestro conjunto de instrucciones, debe definir los modos de direccionamiento que sern soportados. Para efectos del curso consideraremos solamente: Inmediato, de registro (directo e indirecto), de memoria (absoluto), autoincremento y autodecremento (con sus indirectos), el modo de ndice (con su indirecto) y el relativo al PC. Sin embargo nuestro mayor nfasis estar en los modos basados en registros.
Pgina 4 Ing. Jos Daz Chow

Arquitectura de Mquinas Computadoras II

Continuando la definicin de nuestra arquitectura, definimos nuestra palabra de procesador en 16 bits, y ste ser tambin el tamao de los registros, direcciones de memoria y las instrucciones. Asimismo, para simplificar el acceso a memoria, consideraremos que sta es direccionable por palabra y no por byte. De esta forma, cuando un valor no quepa dentro de los 16 bits del formato de instruccin, se emplear la palabra siguiente a la instruccin para almacenar tal valor. Por ejemplo, la instruccin Add R1, (1000) que suma el valor de R1 con el contenido de la celda de memoria 1000 y guarda su resultado en la celda de memoria 1000, debe almacenarse como programa en lenguaje de mquina en dos palabras, la primera de ellas almacena la instruccin en s y la segunda almacena el 1000. Otro ejemplo ms complicado es: Add 1000(R1), (2000). En este caso, se emplea modo de ndice en el operando fuente y modo absoluto en el destino. Esta instruccin se almacena en tres palabras, la primera almacena la instruccin en s, la segunda almacena el 1000 del fuente y la tercera el 2000 del destino. Sin embargo, obsrvese que en algunos casos, el operando cabe dentro del formato de instrucciones y por tanto no se requiere de una palabra adjunta para l. Por ejemplo algunas instrucciones con modo inmediato o relativo que tienen un valor numrico de 8 bits, como muestra la figura 5.3.

6 Bits

2 Bits

8 Bits

CO

MD1

Figura 5.3. Ejemplo de formato inmediato - relativo En base a lo anterior, note que los operandos pueden requerir operaciones ALU para el clculo de la direccin efectiva (EA) y varios accesos a memoria para traer el valor del operando. Por este motivo, al traer el operando fuente hay que guardarlo en un registro temporal, en nuestro caso en source. Ahora, podemos pasar a definir los pasos de la estrategia de ejecucin: Fase Fetch: o Poner el valor del PC en el MAR y mandar a leer o Incrementar el PC y esperar MFC o Pasar el contenido del MDR al IR y Decodificar. Fase Execute o Calcular EA del primer operando, si necesario o Trasladar el primer operando a SOURCE o Calcular EA del segundo operando, si necesario o Traer el segundo operando al CPU si no est en l y ponerlo en Y(ALU) si necesario.

Ing. Jos Daz Chow

Pgina 5

Arquitectura de Mquinas Computadoras II

o Efectuar la operacin ALU (si pertinente) o Trasladar el resultado al destino o Verificar Solicitudes de Interrupcin. A continuacin se ilustrarn los pasos de control para traer la prxima instruccin, cuya direccin siempre debe estar en el PC (Fase Fetch)
Paso 1 2 3 Accin u Operaciones de Control PCout, MARin, READ, Clear Y, Set C, ADD, Zin Zout, PCin, WMFC MDRout, IRin

Otros ejemplos de Ejecucin de instrucciones se listan a continuacin.


Secuencia de Control para la instruccion de ADD R1, R2

Paso 1 2 3 4 5 6 7 8

Accin u Operaciones de Control PCout, MARin, READ, Clear Y, Set C, ADD, Zin Zout, PCin, WMFC MDRout, IRin R1out, SOURCEin R2out, Yin SOURCEout, ADD, Zin Zout, R2in End

Pgina 6

Ing. Jos Daz Chow

Arquitectura de Mquinas Computadoras II

Secuencia de Control para la instruccion de ADD (R1), R2

Paso 1 2 3 4 5 6 6 7 8

Accin u Operaciones de Control PCout, MARin, READ, Clear Y, Set C, ADD, Zin Zout, PCin, WMFC MDRout, IRin R1out, MARin, READ, WMFC MDRout, SOURCEin R2out, Yin SOURCEout, ADD, Zin Zout, R2in End

Un tipo de instruccin especial son las de salto. Las de salto condicional y relativo, son especialmente complicadas. Veamos unos ejemplos de nuestro procesador modelo: Br o Salto relativo incondicional. Esta instruccin tiene un formato como el de la figura 5.3. El valor V de 8 bits debe extenderse a 16 bits. Para obtener el operando basta sacarlo de los 8 bits menos significativos del IR, que se denota como IR(7,0) o ms simplificadamente, IR(V). A continuacin detallamos los pasos de control que se requieren para ejecutar esta instruccin. La figura 5.4 muestra la unidad de extensin de signo que se requiere para permitir llevar al bus de 16 bits los 8 lsb del IR.
Secuencia de Control para una instruccion de Ramificacin Incondicional

IR
7 8 0

Sign Extension

IRout

Al bus
Figura 5.4 Extensin de Signo

Paso Accin u Operaciones de Control 1 2 3 4 5 6 7 PCout, MARin, READ, Clear Y, Set C, ADD, Zin Zout, PCin, WMFC MDRout, IRin PCout, Yin IR(V)out, ADD, Zin Zout, PCin End

Un ejemplo ms completo es el caso del BRN (Branch on Negative) que modifica el valor del PC slo si la bandera de condicin N est establecida a 1. Los pasos de control necesarios son los mismos que para JR excepto que el paso 4 debe modificarse como se muestra:
Ing. Jos Daz Chow Pgina 7

Arquitectura de Mquinas Computadoras II

Caso de la Ramificacion Condicional "Branch On Negative" BRN

El paso 4 se cambia por: 4 IF N Then IF N Then END PCout, Yin

Las banderas de condicin as como muchos cdigos de condicin se almacenan en un registro especial, llamado Processor Status Word en muchas mquinas, por ejemplo la PDP-11 que tiene una instruccin BRN, como la de nuestro procesador modelo, tiene la PSW que se muestra en la figura 5.5. La bandera N o Negative se establece a 1 si el resultado de una operacin aritmtica fue negativo. En muchos procesadores, como el Z80 y el i8086, esta bandera se denomina S o Sign.
PSW (Processor Status Word ) en la PDP-11
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

T N Z V C
Modo Actual Modo Anterior Prioridad Trap Cdigos de Condicin

Figura 5.5 Palabra de Estado de la PDP-11

Continuando con la implementacin de nuestra CU, debe ponerse especial inters en la espera a que la memoria (que normalmente es ms lenta que el CPU) nos entregue la palabra que estamos leyendo. Esto se logra mediante la seal WMFC activada para esperar un dato a leer desde la memoria. Cuando esta seal se activa, no se debe continuar la generacin de nuevas seales de control, es decir, las seales quedan congeladas hasta que el control de la memoria active la seal MFC indicando que se complet su funcin. Recuerde que la Memoria es un dispositivo asncrono respecto al reloj del procesador y por tanto, la implementacin de esta seal debe sincronizar el prximo paso de control con el reloj principal del procesador. Una vez que hemos especificado la funcin y los procedimientos que debe seguir la unidad de control, la prxima pregunta es cmo implementarla. Existen dos formas, implementarla directamente en hardware, como una mquina de estados o empleando microprogramacin.

Pgina 8

Ing. Jos Daz Chow

Arquitectura de Mquinas Computadoras II

5.4 UNIDAD DE CONTROL FIJO


En trminos generales, la unidad de control puede verse como una caja negra que recibe una serie de entradas y genera una serie de salidas en un instante de tiempo. Las entradas son : a) El tipo de instruccin que se est ORGANIZACION DE LA UNIDAD DE CONTROL ejecutando (IR), b) un indicador del paso de control actual y c) el estado de la CONTADOR DE PASO CLCK DE CONTROL mquina que se obtiene en funcin de las ... banderas y cdigos de condicin. El indicador del paso de control actual se puede implementar mediante un contador de los pulsos del reloj base que se restablezca a cero con cada seal End a fin de volver al primer paso de la fase de carga fetch. La figura 5.6 muestra la organizacin a bloques de tal unidad de control.
...
IR DECODIFICADOR / CODIFICADOR
BANDERAS DE CONDICION

...
Seales de Control

Figura 5.6 Organizacin de la unidad de control

En este caso, la CU acta como un 3.1.1.1 Figura 5.6 Diagrama a bloques de gran decodificador/codificador que decodifica la instruccin en el l IR, a Cel U paso de control y el estado de la mquina y codifica las seales de control. Si separamos estas funciones, podemos especificar mejor el diseo de la CU en funcin de la funcin principal: generacin de las seales de control para cada paso de cada instruccin. En este enfoque ms detallado, se hace evidente la necesidad de una seal de reset del contador de paso que no es ms que la seal End y la necesidad de otra seal de habilitacin de conteo que llamaremos RUN. Esta ltima seal puede ser muy til en la implementacin de la espera efectiva de MFC. Cuando RUN est en 1, el contador incrementa, en caso contrario no avanza. La figura 5.7 muestra en detalle esta organizacin. El bloque codificador o generador de seales de salida tiene ahora como entrada seales Ii que le indican la instruccin y seales Tj que le indican el paso actual as como las banderas y cdigos de condicin. Ahora bien, cmo se genera cada seal de salida. Un enfoque bastante simple consiste en realizar un inventario de todas las seales de control necesarias y luego determinar las expresiones algebraicas lgicas para cada una de ellas, por ejemplo, la seal Zin, se activa siempre en el paso 1 de la fase
Ing. Jos Daz Chow

CLCK

CONTADOR DE PASO DE CONTROL

DECODIFICADOR DE PASO
T1 T2 I1 I2 I3

Tn

...
IR
DECODIFICADOR DE INSTRUCCIONES CODIFICADOR

... ...
...
END

Im

RUN

Seales de Control

Figura 5.7 Organizacin detallada de la CU Pgina 9

...

...

...
...

CODIGOS DE CONDICION

BANDERAS DE CONDICION

...

CODIGOS DE CONDICION

Arquitectura de Mquinas Computadoras II

fetch, independientemente de la instruccin que sea, tambin en el paso 6 de la instruccin ADD, el 5 de BRN, etc; por tanto la expresin de Zin sera: Zin = T1 + ADD.T6 + BRN.T5 + ....

End, por su parte sera: End = T8.ADD + T7.JR + T4.(~N).BRN + T7.N.BRN+ As se obtienen las de todas las seales de control y la generacin se seales de la CU se reduce a implementar los circuitos combinacionales de estas expresiones como se muestra en la figura 5.8 con los ejemplos Zin y End.
Generacin de la seal de control Zin
ADD BR

Generacin de la seal de control END


N BRN N T4

T6

T5

T8

ADD

T7

JR

T7

Zin

END
Figura 5.8 Implementacin de algunas seales de control

Ahora estamos en posicin de implementar la espera efectiva iniciada por la seal WMFC, lo cual se hace mediante el auxilio de la seal RUN. Sabemos que la seal RUN nos puede permitir enfriar el contador de pasos de control hasta que se establezca MFC y por tanto sta debe ser 1 cuando no hay espera a MFC y 0 cuando s la hay. El ADD Generacin de la simple circuito de la figura 5.9 me permite T4 implementar estas condiciones, como el lector puede seal RUN fcilmente comprobar.

WMFC MFC

Figura 5.9 Implementacin de WMFC y RUN.

Pgina 10

...

...

Sin embargo, debido a la asincrona entre Memoria y CPU, dicha seal podra establecerse en un momento inadecuado, como muestra el diagrama de temporizacin de la figura 5.10, por tanto se requiere sincronizar la seal MFC para que espere al reloj base, lo cual se logra anexando un elemento sincrnico como un FF tipo D. Esta solucin se muestra en la figura 5.11

T2

...
RUN
Ing. Jos Daz Chow

...

...

...

T1

Arquitectura de Mquinas Computadoras II

MCLK CLK WMFC MFC RUN READ


T1 T2 T3 Temporizacin de las seales de control durante la trada de las instrucciones

Sincronizacin de MFC con el Reloj Base


WMFC

RUN MFC
D RELOJ BASE Q

Figura 5.11 Sincronizacin MFC con el reloj base Figura 5.10 Necesidad de sincronizacin de MFC.

Finalmente, podemos acotar que para simplificar la circuitera, en procesadores reales, todas las seales de control se implementar en bloques PLA, como muestra la figura 5.12. Existen otras formas y tcnicas ms complejas y refinadas para implementar tales unidades de control alambrado.
PLA ( PROGRAMABLE LOGIC ARRAY )

ARREGLO

ARREGLO

...

AND

OR

...
IR

...
CONTADOR DE PASO DE CONTROL

...
BANDERAS Y CODIGOS DE CONDICION

...
Seales de Control

Figura 5.12 Implementacin de un controlador de secuencia con un chip VLSI

Ejercicio:

1. Investigue qu tipo de unidad de control predomina en mquinas RISC y cul en mquinas CISC. Argumente las razones. 2. Establezca ventajas y desventajas de la CU alambrada.

Ing. Jos Daz Chow

Pgina 11

Arquitectura de Mquinas Computadoras II

5.5 UNIDAD DE CONTROL MICROPROGRAMADA


Hemos estudiado la funcin y diseo general de una unidad de control y definido una tcnica sencilla para implementar una CU Fija o alambrada. Ahora estudiaremos otro enfoque, la CU microprogramada. Si hacemos un recuento de la funcin de nuestra CU como caja negra, se evidencia que solamente requerimos activar en cada lapso de tiempo o paso de control, las seales de control adecuadas para ejecutar la instruccin. Estas seales de control, en realidad son responsables de ejecutar una serie de operaciones de control o micro-operaciones que ejecutan la instruccin. Al agrupar y organizar el conjunto de seales de control, puede visualizarse que en cada paso de control, algunas de ellas estn activadas (en 1 lgico) y el resto desactivadas (0 lgico) Si anotamos los estados de estas seales con ceros y unos, veremos que forman un patrn binario, como nos muestra la figura 5.13. A este arreglo de estados de las seales de control en un paso de control se le denomina palabra de control o cw.
MARi
n

Paso

PCin

PCout

Yin

READ

MDRout

IRin

ClrY

SetC

ADD

Zin

Zout

R1in

R1out

R2in

R2out

WMFC

END

1 2

0 1

1 0

0 0

1 0

1 0

0 0

0 0

1 0

1 0

1 0

1 0

0 1

0 0

0 0

0 0

0 0

0 1

0 0

Figura 5.13 Correspondencia Seal de control-bit de cw

As, ejecutar una instruccin se limitara a cargar secuencialmente las Cw en cada paso y activar las seales en uno y desactivar las seales en cero, o ms bien cargar el valor de la Cw en la salida de la CU. La secuencia de Cws para cada instruccin se llamara Microprograma o programa y cada Cw se llamara instruccin. Claro que necesitamos entonces, almacenar los programas en una memoria permanente de muy alta velocidad (generalmente una ROM) dentro de la CU. A esta memoria se le llama memoria de control.

Pgina 12

Ing. Jos Daz Chow

Arquitectura de Mquinas Computadoras II

La figura a continuacin muestra el microprograma para la instruccin ADD R1, R2.

SOURCEout

SOURCEin

CLEAR Y

MDRout

R1out

R2out

PCout

ADD

R1in

R2in

PCin

1 2 3 4 5 6 7 8

End 0 0 0 0 0 0 0 1

IRin

Zout

CW

WMFC 0 1 0 0 0 0 0 0

SET C

MARin

READ

Yin

0 1 0 0 0 0 0 0

1 0 0 0 0 0 0 0

0 0 0 0 1 0 0 0

1 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0

0 0 1 0 0 0 0 0

0 0 1 0 0 0 0 0

1 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0

1 0 0 0 0 1 0 0

Zin 1 0 0 0 0 1 0 0

0 1 0 0 0 0 1 0

0 0 0 0 0 0 0 0

0 0 0 1 0 0 0 0

0 0 0 0 0 0 1 0

0 0 0 0 1 0 0 0

0 0 0 1 0 0 0 0

0 0 0 0 0 1 0 0

Figura 5.14 Microprograma para ADD R1, R2

Para implementar la CU microprogramada, se requiere entonces de todos los microprogramas de todas las instrucciones del CPU almacenados en una memoria de control y un mecanismo que permita cargar el microprograma adecuado para la instruccin que se carga en el IR y ejecutar dicho microprograma. Este mecanismo se denomina secuenciador de microprograma o microinstrucciones. El secuenciador de microprograma necesita determinar la direccin inicial del microprograma de la instruccin en el IR, lo cual se logra mediante un decodificador/codificador que permite obtener dicha direccin en funcin del CO de la instruccin. Tambin requiere recorrer el microprograma, para lo cual se provee un microPC (PC) que apunta siempre a la prxima instruccin a ejecutar. El secuenciamiento entre instrucciones se puede lograr de varias formas, la ms sencilla es que stas estn almacenadas secuencialmente en la memoria el PC tenga la capacidad de auto-incrementarse. Otra tcnica muy empleada consiste en agregar a la instruccin un campo de prxima instruccin, que hace ms sencilla la implementacin pero deja bastante trabajo al programador del sistema. Nosotros seguiremos la primera opcin. La figura 5.15 muestra el diagrama a bloques de nuestro secuenciador de microinstrucciones. Muchas instrucciones, sin embargo, requieren verificar cdigos y banderas de condicin, as como modificar el flujo del programa. Entonces, debe agregarse a las Instrucciones la capacidad de Verificar tales cdigos y banderas as como poder ramificarse, es

IR

Generador de Direccin inicial

PC

Memoria del Programa

cw

Figura 5.15 Secuenciador de microinstrucciones

Ing. Jos Daz Chow

Pgina 13

Arquitectura de Mquinas Computadoras II

decir, no continuar en la prxima instruccin sino en otra (recordemos el caso de BRN). A este cambio en el flujo de microinstrucciones se denomina microrramificacin ( ramificacin o Branch). Para permitir microrramificaciones, deben agregarse algunos campos de bits extra en la palabra de control Cw que permitan definir si la sta es una Ramificacin o si puede ramificarse en funcin de alguna condicin. Tambin deben definirse qu cdigos o banderas de condicin se evalan y alguna forma de obtener la direccin de salto o modificacin al PC. A partir de esto, podemos redisear nuestro secuenciador de forma ms detallada:

IR

Generador de Direccin inicial y de ramificacin

Banderas de Condicin

Cdigos de Condicin

PC

Memoria del Programa

cw

Figura 5.16 Secuenciador de microinstrucciones ms detallado

Antes de pasar a analizar la operacin del secuenciador, necesitamos definir algunas reglas: La fase fetch, que es comn a toda instruccin, ser definida como un programa independiente que comienza en la primera celda de la memoria de control, as al encender la mquina el PC se inicializa en 0 de forma tal que cargue la instruccin que est en el PC. La seal End debe poner el PC a 0. Al cargarse una nueva instruccin en el IR, el generador de direcciones debe cargar en el PC la direccin inicial de la rutina que ejecuta dicha instruccin. Las Ramificaciones podrn modificar el valor del PC, ya sea cargando un nuevo valor o cambiando algunos bits del mismo, como se estudiar ms adelante.

Ahora, con este detalle s es posible explicar cmo se implementa la ejecucin de instrucciones que requieren verificar el estado de las banderas de condicin, ejemplo clsico es la instruccin BRN estudiada anteriormente. El paso de control 4 de su desarrollo requiere de
Pgina 14 Ing. Jos Daz Chow

Arquitectura de Mquinas Computadoras II

una Ramificacin condicional que cambie el flujo del programa en funcin del valor de la bandera N, pasando al paso 8 con End, si no habrs salto o continuando en el paso 5 si debe modificarse el PC. Supongamos que el microprograma de la instruccin BRN comienza en la celda 20 de la memoria de control, entonces, la implementacin de sta instruccin podra realizarse escribiendo un microprograma de la siguiente manera:
MicroPrograma Para la Instruccin BRN

Dir 0 1 2 3 20 21 22 23 24

MicroInstruccin PCout, MARin, READ, Clear Y, Set C, ADD, Zin Zout, PCin, WMFC MDRout, IRin Branch Direccin Inicial del Prog. adecuado Si N entoncesBranch a 24 PCout, Yin IR(V)out, ADD, Zin Zout, PCin End

Es importante notar que la PC microinstruccin de la direccin 3 se encarga de modificar el PC con la salida del generador de direccin inicial que bien 0 0 0 0 0 0 0 1 0 0 0 1 puede estar implementado en PLA, en la prctica en esta Instruccin lo que ocurre 11 10 9 8 7 6 5 4 3 2 1 0 es PC = 20. Tambin la Instruccin en la celda 20 es una Ramificacin que cambia el N N valor del PC, pero con un valor fijo en funcin de una condicin. En la prctica esto Figura 5.17. Modificacin del PC en BRN se logra modificando los bits del PC selectivamente. La figura 5.17 nos puede ayudar a comprender esto mejor. Durante la ejecucin de la instruccin 20, el PC vale 21 pues se auto increment. Supongamos que el PC es de 12 bits y que se codifica en octal (3 bits por dgito), entonces el valor 21 del PC, se codificara como muestra la figura. Si N es 0 no debe haber salto y por tanto el PC debe modificarse para valer 24, sino debe conservar su valor de 21. Esto se logra estableciendo el valor del bit 2 PC a ~N y el bit 0 del PC a N (PC2 ~N, PC0 N) como muestra la figura 5.17.

Un caso de necesario estudio es la seal WMFC. Aunque el control programado sea ms lento de ejecutar que el alambrado, las memorias de control suelen ser muy pequeas y mucho ms rpidas que la principal, por lo cual siempre ser necesario inhibir la generacin de
Ing. Jos Daz Chow Pgina 15

Arquitectura de Mquinas Computadoras II

las seales de control de la Instruccini+1 si la Instruccini activ la seal WMFC, hasta que la memoria principal active la seal MFC. Existen dos enfoques: Polling de la seal MFC (Ciclo que verifica el estado de la seal) Hardware de Inhibicin con un FF establecido por WMFC y Restablecido por MFC.

La Figura abajo muestra un posible implante del segundo acercamiento, empleando un FF tipo D.
Banderas de Condicin

IR

Generador de Direccin inicial y de ramificacin


Cdigos de Condicin

INC

PC cw
Seales de Control

MFC

CLK

Q'

Memoria del Programa

Generador de Seales de Control E

...

WMFC

Figura 5.18 Implementacin de la espera efectiva de WMFC

El esquema propuesto hasta el momento es sencillo sin embargo se presta a desperdicio que podran hacer crecer mucho la memoria de control, por ejemplo, note que por regla general todas las instrucciones han dejado el ltimo paso de control slo para la seal END. La tarea de esta seal es restablecer el PC e indicar la finalizacin de la instruccin actual. Se puede ahorrar una instruccin, activando esta seal de ltimo en el paso anterior. Otro caso es el posible desperdicio cuando una instruccin posee mltiples modos, pues el diseador puede estar tentado a escribir un microprograma para cada combinacin posible de operandos, sin embargo se pueden hacer Ramificaciones para conducir la micro rutina por el camino indicado dentro del mismo microprograma. Otro aspecto a considerar es la longitud de Cw. En realidad, tener un bit por cada seal de control, es un gran desperdicio. En el esquema de CPU de un solo bus de nuestro modelo, se requiere de algunos Registros auxiliares como SOURCE, DESTINE, TMP, SP, Y y Z; se tienen 8 GPR: R0R7 lo cual nos da unas 29 seales in/out de registros. Por otro lado, las seales de los registros propios del CPU, suman otras 7 seales de manejo por compuerta. Si adicionamos las de Memoria READ/WRITE, las 16 funciones ALU, Set/Reset C, Clear Y, Set Y(0, 1, 2 ) y algunas 16 Funciones adems de las seales y banderas, nos da unas 60 seales, con lo cual el tamao de palabra es bastante grande. Si observamos, muchas seales no se emplean al mismo tiempo y
Pgina 16 Ing. Jos Daz Chow

Arquitectura de Mquinas Computadoras II

bastantes de ellas son mutuamente excluyentes. Por ejemplo, slo se activa una funcin de ALU a la vez. Segn el esquema de bus nico, no se pueden dar dos seales out en una misma Instruccin y slo puede activarse una funcin de memoria a la vez, READ o WRITE. Podemos agrupar las seales mutuamente excluyentes en grupos donde en lugar de haber in bit por seal, hay un cdigo o patrn binario indica qu seal se activa en un momento dado. Obviamente, es necesario designar una combinacin neutra que implique no activar ninguna seal del grupo (excepto para las funciones de la ALU). Por ejemplo, para las 16 funciones de la ALU, slo son necesarios 4 bits (ahorro de 12 bits) de cdigo. Todas las seales de salida al bus son excluyentes y pueden formar un solo grupo, donde el cdigo 0 signifique que no hay salida al bus en ese paso de control. As sucesivamente, se pueden agrupar las seales segn sea posible. El ejemplo a continuacin nos muestra el agrupamiento parcial de seales de control en campos (Fi) en funcin de algunos de los ejemplos anteriores. Note que aqu se consideran slo cuatro GPR en lugar de ocho. Los GPR pueden organizarse en un Banco o archivo de Registros (BR) con lo cual, solo se requeriran 3 bits de seleccin (R0 ... R7) de registros y 2 seales de control BRin, BRout para su manipulacin. F1 (4 bits)
0000:Nada 0001: PCout 0010: MDRout 0011: Zout 0100: R0out 0101: R1out 0110: R2out 0111: R3out 1000: SOURCEout 1001: DESTINEout 1010: TMPout 1011: IR(V)out

F2 (3 bits)
000: Nada 001: PCin 010: IRin 011: Zin 100: R0in 101: R1in 110: R2in 111: R3in

F3 (2 bits)
00: Nada 01: MARin 10: MDRin 11: TEMPin

F4 (2 bits)
00: Nada 01: Yin 10: SOURCEin 11: DESTINEin

F5 (4 bits)
0000: Add 0001: Sub 0010: Div 0011: Mult 0100: And 0101: Or 0110: Xor 0111: 1000: 1001: 1010: 1011:

F6 (2 bits)
00: Nada 01: READ 10: WRITE

...

F7 (1 bit)
0: Nada 1: Clear Y

F8 (1 bit)
0: C = 0 1: C = 1

F9 (1 bit)
0: Nada 1: WMFC

F10 (1 bit)
0: Continue 1: End

Tambin se podra llegar a un mximo nivel de codificacin, agrupando todas las seales en un solo grupo, y codificando todas las posibles combinaciones. En teora, tal arreglo dara menos lneas necesarias para la Cw, por lo cual a tal arreglo se le denomina organizacin vertical de microinstrucciones, por otro lado, cuando deparamos un bit por seal de control tenemos una organizacin horizontal. El ejemplo anterior, con agrupaciones parciales se denomina organizacin hbrida o mixta. A mayor grado de agrupamiento, el hardware de decodificacin se hace ms complejo. Una buena tcnica de diseo consiste en comenzar con

Ing. Jos Daz Chow

Pgina 17

Arquitectura de Mquinas Computadoras II

una organizacin horizontal e iterar la creacin de agrupamientos hasta obtener la mejor relacin entre tamao de la Cw, complejidad del hardware y desempeo.

Pgina 18

Ing. Jos Daz Chow

Arquitectura de Mquinas Computadoras II

5.6 MICROPROGRAMA Y MICRORRAMIFICACIONES


Los diseadores de mquinas CISC aprecian mucho la tcnica de microprogramacin porque puede permitir que una misma instruccin emplee varios modos de direccionamiento dando flexibilidad en el manejo de los operandos, lo cual es difcil de hacer en RISC dado que se desea mantener lo ms simple y rpida posible a la CU, empleando control fijo. A mayor cantidad de modos de direccionamiento, mayor cantidad de microprogramas para la misma instruccin, veamos el ejemplo la instruccin ADD de nuestro modelo de procesador sencillo, en el formato R que se muestra en la figura 5.19 puede tener para ambos operandos modo directo e indirecto de registro, directo e indirecto de ndice, directo e indirecto de autoincremento y autodecremento; dando por resultado ocho modos en cada operando y por consiguiente 64 microprogramas slo para esa instruccin, con lo cual el nmero de microrrutinas a almacenar vuelve a ser otra vez enorme.

15

14

13

12

11

10

CO

MD1

R1

MD2

R2

Figura 5.19 Formato R del procesador X

Notemos, sin embargo, que mucho del cdigo de estos microprogramas sera redundante. Por ejemplo, la fase fetch es idntica en todas las instrucciones y podra implementarse como un microprograma aparte iniciando en la direccin 0 de la memoria de control. Las instrucciones comenzaran en la trada del primer operando. Aprovechando las micro ramificaciones, podramos hacer un nico programa para todas las instrucciones que comparten cdigo comn y agregar las micro ramificaciones que permitan seleccionar el camino correcto en cada caso, por ejemplo el ADD mencionado podra tener un camino para cada modo y luego unirse en un tronco comn. Podemos valernos de un diagrama de flujo de datos para apreciar de forma clara la estructura del microprograma con micro ramificaciones para cada modo, como se muestra en la figura 5.20 para nuestro ejemplo. Cada rectngulo equivale a una microinstruccin de acciones de control y cada interseccin a una microinstruccin de micro ramificacin. A veces es requerido que una microinstruccin de acciones de control tambin pueda modificar el PC, lo cual es permitido. Todas las microinstrucciones se rotulan con su direccin en la memoria de control (sobre la esquina superior derecha). El ejemplo de la figura 5.20 emplea direcciones octales y un PC de 12 bits.

Ing. Jos Daz Chow

Pgina 19

Arquitectura de Mquinas Computadoras II

START
000

MAR <- [PC]; READ; Z <- [PC] + 1


001

PC <- [Z]

002

PLA, IR <- [MDR] PC, AR <-[PLA]

003 161 141 121 111

MAR <- [PC]; READ; Z <- [PC]+1


162

Z <- [Rsrc] - 1
142

MAR <- [Rsrc];READ; Z <-[Rsrc] + 1


122

MAR <- [Rsrc]; READ

PC <- [Z]

MAR, Rsrc <- [Z]; READ


163

Rsrc <- [Z]

Y <- [MDR]
164

Z <- [Y] + [Rsrc]


165

MAR <- [Z]; READ

166

MAR <- [MDR]; READ

167

101

SOURCE <- [MDR]


170

SOURCE <- [Rsrc]

200 261 241 221 211

MAR <- [PC]; READ; Z <- [PC]+1


262

Z <- [Rdst] - 1
242

MAR <- [Rdst];READ; Z <-[Rdst] + 1


222

MAR <- [Rdst]; READ

PC <- [Z]

MAR, Rdst <- [Z]; READ


263

Rdst <- [Z]

Y <- [MDR]
264

Z <- [Y] + [Rdst]


265

MAR <- [Z]; READ

266

MAR <- [MDR]; READ

267

201

Y <- [MDR]

Y <- [Rdst]

270

Z <- [Y] + [SOURCE]


271 272 273

MDR <- [Z]; WRITE

Rdst <- [Z]

STOP

Figura 5.20 Diagrama de flujo de la Instruccin ADD

Pgina 20

Ing. Jos Daz Chow

Arquitectura de Mquinas Computadoras II

Haciendo un recuento del tipo de micro ramificaciones tenemos: 1. 2. 3. 4. Ramificaciones de direccin amplia ( Seleccin de direccin inicial) Ramificaciones de asignacin de PC ( Modifican el PC: PC nn) Ramificaciones de modificacin de bits del PC (PCi [0|1] ) Ramificaciones mixtas ( Mezclan el comportamiento de varios tipos anteriores)

En base al DFD de la instruccin ADD, que define el microprograma genrico para la misma, podemos simular la ejecucin de la instruccin ADD (R7)+, R3. El microprograma se representa de manera similar a los pasos de control, representando en lugar de pasos, la direccin de la microinstruccin ejecutada como se muestra en el ejemplo. La figura 5.21 muestra el contenido del IR para esta instruccin. Note que las interrupciones de las lneas del DFD son activaciones de la seal WMFC.
CONTENIDO DEL IR
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 1 0 0 1 0 1 1 1 0 0 0 0 1 1
CO MD1 R1 MD2 R2

Figura 5.21 Codificacin de Instruccin ADD (R7)+, R3

Direccin
(octal)

MicroInstruccin

000 001 002 003 121 122 123 166 167 170 201 202 270 271 273

PCout, MARin, READ, Clear Y, Set C, ADD, Zin Zout, PCin, WMFC MDRout, IRin Br {PC[PLA]; PC 101, PC5,4 [IR11,10], PC3 [IR11].[IR10]. [IR9]} [IR3 ]}121[IR 11 10].[IR 9]} Y, Set C, ADD, Zin R7 , MARin , ].[IR READ, Clear out Zout, R7in Br {PC 166; PC0 [ IR9 ]}, WMFC MDRout, MARin READ, WMFC MDRout, SOURCEin Br {PC 201, PC5,4 [IR5,4], PC3 [IR5] . [IR4] . [IR3]} R3out, Yin Br {PC 270} SOURCEout, ADD, Zin Br {PC 272; PC0 [IR5] . [IR4] . [IR3]} Zout, R3in, End.

Es interesante notar las modificaciones al PC va los bits del IR para la seleccin del camino correcto segn el modo. Como el lector podr notar, la trada del primer operando est en secciones de la memoria de control con direcciones que inician con 1 y los del segundo
Ing. Jos Daz Chow Pgina 21

Arquitectura de Mquinas Computadoras II

en direcciones que inician con 2. El modo de registro directo est en un camino definido por el segundo dgito de la direccin en 0 y el indirecto en 1. El modo de autoincremento est en 2 y el auto decremento en 4. El modo de ndice est en la lnea del segundo dgito en 6. Es interesante que precisamente estos son los cdigos del modo de direccionamiento del procesador. El bit menos significativo de los tres que conforman el campo de MD es el bit de indireccin, si est en 1 el modo es indirecto. En instrucciones complejas como BRN, la modificacin de bits del PC se hace tambin en funcin de las banderas y cdigos de condicin, como N. La trada de las microinstrucciones desde la memoria de control puede ralentizar mucho el desempeo, por lo cual la memoria de control debe ser lo ms rpida posible. En algunos procesadores se acelera este proceso haciendo trada previa de una o varias microinstrucciones y guardndolas en una cola. El problema con esto son las micro ramificaciones, por lo cual habra necesidad de agregar circuitera extra para verificar si la instruccin trada es vlida.

5.7 APLICACIONES DE LA MICROPROGRAMACION


La microprogramacin es una tcnica muy poderosa de diseo de la CU porque permite a programadores de sistema y a los fabricantes modificar el conjunto de instrucciones del CPU sin tener que hacer cambios de hardware. Veamos unos ejemplos: El fabricante podra fcilmente, agrandar el repertorio de instrucciones con solo agrandar la memoria de control, copiar en ella los nuevos microprogramas y actualizar la tabla de decodificacin de direccin base de microprogramas. La modificacin de una instruccin podra realizarse fcilmente desde software si la memoria de control fuera una EEPROM o una RAM con energa permanente. Estas modificaciones podran hacerlas tanto el fabricante como el programador del sistema. Otra utilidad sera, permitir a una aplicacin escribir en algn rea especial de la RAM de control un nuevo conjunto de instrucciones de forma temporal para Emular otra mquina completa, de esta forma nuestra computadora X podra ejecutar software de cualquier otra computadora Y si pudiramos reproducir sus instrucciones en micro cdigo. La aplicacin de emulacin slo necesitara poder definir cmo el generador de direcciones iniciales acceder a este nuevo conjunto de instrucciones.

Pgina 22

Ing. Jos Daz Chow

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