Академический Документы
Профессиональный Документы
Культура Документы
Apunte de Microprogramación
Indice
1. Introducción 2
3. Funcionamiento de la CPU 10
3.1 Transferencia de la Información 10
3.2 Ejemplo de una instrucción sin acceso a memoria 11
3.3 Ciclo de Fetch 14
3.4 Contador de microprograma 16
3.5 Instrucciones 16
3.5.1 Sin operandos 16
3.5.2 Con un operando 17
3.5.3 De bifurcación 18
5. Optimización 22
5.1 Codificadores y decodificadores 22
5.2 Superposición de microoperaciones 23
5.3 Microprogramación horizontal, vertical y mixta 25
5.4 Aplicaciones de una organización mixta 25
Organización del Computador I
Microprogramación
1. Introducción
Una instrucción de lenguaje ensamblador tiene una relación uno a uno con el nivel de lenguaje
máquina y a su vez una instrucción en lenguaje máquina es interpretada por el procesador y
ejecutada.
Para ello ira a buscar a la memoria principal una instrucción cargada previamente, la
examinará, la ejecutará e irá a buscar la instrucción siguiente, a menos que la ejecución de la
instrucción haya modificado la dirección de búsqueda de la próxima instrucción (bifurcación
de control).
Para ejecutar una instrucción, el procesador podría descomponer la operación que debe
ejecutar en tareas o pasos más pequeños; al ser menor cada tarea es más fácil realizarla. Si la
Unidad de Control usa esta técnica, a cada una de las tareas en que se descompone una
instrucción se la llamará microinstrucción. Un conjunto de microinstrucciones combinadas
lógicamente para implementar una instrucción se llama microprograma.
Página 2
Organización del Computador I
Microprogramación
CU OP1
RI OP2
RPI TRA
AX Stack
BX Base
CX Lim
DX AUX1
Y AUX2
Interrup.
ALU
X: ZNPC- - -
-
2.1 Registros
Página 3
Organización del Computador I
Microprogramación
La característica más importante del registro es la longitud de palabra, que coincide con la
cantidad de bits que es capaz de almacenar simultáneamente. Nosotros, en general,
trabajaremos con registros de 16 bits (2 bytes).
Página 4
Organización del Computador I
Microprogramación
2.2 Bus
Hay dos formas para transmitir la información: en Serie o en Paralelo. En Serie se transmite un
bit a continuación del otro a través de una sola vía de comunicación. Por lo tanto un byte de
ocho bits tardará ocho veces el tiempo de transmisión de un bit en completarse. En Paralelo
se transmiten los n bits al mismo tiempo mediante n vías de comunicación; como se puede ver,
un byte tardará en enviarse el tiempo de transmisión de un bit. Por lo tanto la transmisión en
paralelo es más rápida que en serie. En el caso de los buses la transmisión se realiza en
paralelo.
Otra característica de los buses es que pueden ser unidireccionales o bidireccionales. Esta
condición se representará con la siguiente notación:
Todos los dispositivos se comunican entre sí por medio de n buses. Si todos los dispositivos
estuvieran conectados al bus en forma directa, estarían enviando y recibiendo información al
mismo tiempo. Este envío simultáneo de información por el bus produciría la mezcla de las
señales eléctricas, provocando la pérdida de la información incluyendo el posible cortocircuito
o sobretensión de algún dispositivo.
Para evitar esto es necesario administrar el envío de la información en el bus, y esto se lleva a
cabo utilizando compuertas que se conectan entre los dispositivos y el bus. Dichas compuertas
son llaves de paso que serán habilitadas en el momento preciso, eliminando la posibilidad de
pérdida de la información.
2.4 Compuertas
Los registros son capaces de recibir y enviar información, por ello serán necesarias dos líneas
de conexión, una para cada tarea.
Página 5
Organización del Computador I
Microprogramación
Cada línea de transmisión tendrá una compuerta asociada, la cual a menos que se la invoque,
estará siempre desconectada. A los efectos de indicar que una compuerta es invocada, se
utilizará la siguiente nomenclatura: para señalar a que dispositivo corresponde se usará la sigla
del registro (por ejemplo RPI, AX, RBM), y para establecer el tipo de operación a se
efectuará agregaremos un subíndice ‘in’ para el caso de ingreso de información y ‘out’ para el
envío de la misma.
Por ejemplo:
PRIout : El contenido del registro RPI estará disponible en el bus.
AXin : El contenido del bus se almacenará en el registro AX.
En todos los casos se transmitirá simultáneamente la información de todos los bits, entre los
registros y el bus (y viceversa).
AX AXin
AXout
RY RYin
ALU
Bus
Zin
Zout
Cada microinstrucción requerirá un tiempo para ejecutarse, en ese tiempo se llevarán a cabo
todas las microoperaciones. El tiempo de ejecución de una instrucción será el tiempo de
ejecución de todas las microinstrucciónes que componen la instrucción.
Página 6
Organización del Computador I
Microprogramación
La Unidad de Control hará las siguientes tareas: ir a buscar una instrucción a memoria,
decodificar la instrucción y ejecutarla. El proceso de búsqueda de una instrucción (o dato) a
memoria es común a todas las instrucciones, es decir a cada microprograma.
La función de la Unidad Aritmética y Lógica (Arithmetic & Logic Unit - ALU) es la de realizar
las operaciones aritméticas y lógicas, como ser la SUMA, RESTA, MULTIPLICACIÓN,
DIVISIÓN, AND, OR, XOR, etcétera. Para efectuar todas las operaciones, salvo el NOT y
el SHIFT, utiliza dos entradas y una salida. Es decir realiza las operaciones sólo con dos
operandos a la vez (los de entrada) y devuelve un resultado. La ALU recibe las señales de
control que envía la Unidad de Control, sabiendo así la operación que debe realizar.
A B
Señales de Z
control que . N Códigos de
envía la CU : ALU P Condición
C
Salida
Página 7
Organización del Computador I
Microprogramación
Z N P C Significado
1 0 0 0 El resultado de la operación aritmética es cero o el resultado de la
operación lógica tiene todos bits en cero.
0 0 1 0 El resultado de la operación aritmética es positivo y sin acarreo o el
resultado de la operación lógica tiene todos los bits en 1
0 0 1 1 El resultado de la operación aritmética es positivo y con acarreo
0 1 0 0 El resultado de la operación aritmética es negativo y sin acarreo o el
resultado de la operación lógica contiene bits en 0 y en 1
0 1 0 1 El resultado de la operación aritmética es negativo y con acarreo
El tiempo que demanda una operación es, a lo sumo, el de una microinstrucción. Debido a que la ALU no
puede retener el resultado de la operación efectuada, se la utiliza en combinación con un registro de
operación auxiliar (registro Z) al cual se le habilita la compuerta de ingreso en el momento de efectuar la
operación.
Para poder trabajar con dos operandos, uno de ellos tendrá que ser previamente almacenado
en un registro auxiliar (Registro Y), mientras que el otro estará presente en el bus. Para
realizar una operación se habilitará la salida del registro Y y la del otro operando que estará
almacenado en otro registro.
Para almacenar los códigos de condición usaremos un registro auxiliar (registro X) de 8 bits,
en el cual los primeros 4 bits se destinarán a los códigos Z, N, P, C respectivamente.
ALU Bus
ZNPC ----
Página 8
Organización del Computador I
Microprogramación
Supongamos que queremos realizar una suma, y que los sumandos están almacenados uno en
el registro Y y el otro en el registro AX, el resultado de dicha operación quedará en el registro
Z. Para ello la microinstrucción a utilizar sería:
Nota: las señales de control como ADDs que utilizan dos operandos habilitan la compuerta de
salida de RY, es decir, dan simultáneamente las órdenes a la ALU y a RYout.
Vemos que la anterior es una microinstrucción compuesta por tres microoperaciones que se
realizan simultáneamente que son:
En una operación de suma con acarreo, si el bit de carry está en uno, se incrementa el
resultado y en una de resta, con las mismas condiciones, se decrementa.
Página 9
Organización del Computador I
Microprogramación
Hay dos registros que contendrán la información para comunicarse con el medio externo,
estos son:
El primero contendrá la información que fue recibida o que va a ser transmitida y el segundo
contendrá la dirección desde donde la información será recibida o a donde será enviada. El
RBM estará conectado al bus de datos y el RDM al de direcciones.
Para efectuar una lectura de memoria deberá primero cargar la dirección de memoria en el
RDM y luego enviar una señal de pedido de lectura a memoria y esperar a que se realize la
operación. Una vez que se recibe la señal de que la operación se ha completado el contenido
de la lectura solicitada estará almacenado en el RBM.
Como el acceso a memoria se hará de a un byte (una palabra), dicho bus contendrá 8
“cables” y el RBM almacenará sólo 8 bits. Debido a que estamos trabajando con un mapa de
memoria de 0000h a FFFFh necesitamos 2 bytes para poder representar todas las
direcciones, por lo cual el bus de direcciones será de 16 bits y el registro RDM también.
2.8 Señales
Las señales brindan información acerca del control de lo que se debe hacer. Como vimos
antes, la Unidad de Control envía señales a la ALU sobre qué operación debe efectuar.
Además envía señales a la memoria sobre si debe hacer una operación de lectura o escritura.
Hay otras señales externas como ser la que indica la finalización de la operación con la
memoria.
Página 10
Organización del Computador I
Microprogramación
3. Funcionamiento de la CPU
AX
0 . . . . . . 7 8 . . . . . . 16
AXL AXH
Veamos cómo se puede hacer para copiar información de un registro a otro, por ejemplo del
AX al BX. Se habilita la compuerta de salida de AX, haciéndose de esta manera la
información presente en el bus, y se abre la compuerta de entrada de BX, permitiendo de esta
manera que la información del bus quede almacenada.
Todo esto debe ocurrir al mismo tiempo debido a que en caso contrario la información de AX
no se mantendrá en el bus y BX tomará cualquier valor. El tiempo en el cual se efectuarán
estas dos microoperaciones es el de una microinstrucción. En este caso la microinstrucción a
realizar es:
AXout , BXin
Como vemos, todas las microoperaciones que componen una microinstrucción se escriben en
una misma línea sin importar el orden dentro de la microinstrucción, por lo cual es equivalente
escribir : AXout, BXin a BXin, AXout.
AXout, BXin
AXout, CXin
Como vemos para realizar esta tarea se necesitan dos microinstrucciones. Otras formas de
obtener el mismo resultado son :
Página 11
Organización del Computador I
Microprogramación
AXout, BX in
CXin
¿Que pasaría en este caso? BX tendría el contenido de AX, pero CX tendría un valor
indefinido. ¿Por que? La respuesta es que el contenido de AX se mantendrá en el bus
únicamente por el tiempo que tarde la primer microinstrucción, una vez que esta haya
concluido, nadie puede asegurar cual es el contenido del bus, por lo tanto el contenido final de
CX.
Ejercicios :
¿Cual es el contenido del registro AX después de ejecutar cada una de las siguientes
microinstrucciones?
Aquí nos referiremos sólo a una instrucción que en su ejecución no hará acceso a memoria. La
instrucción es copiar el contenido de un registro a otro.
Primero se debe buscar la instrucción a memoria, luego decodificarla y por último ejecutarla.
A nivel de microprograma será:
Página 12
Organización del Computador I
Microprogramación
1. RPIout, RDMin
2. READ
3. WAITfmc
4. CLEAR Y
5. RPIout, CARRYin=1, ADDsa, Zin
6. Zout, RPIin
7. RBMout, RILin
8. RPIout, RDMin
9. READ
10. WAITfmc
11. CLEAR Y
12. RPIout, CARRYin=1, ADDsa, Zin
13. Zout, RPIin
14. RBMout, RIHin
======== Decodificación ========
15. BXout, AXin
16. END
1. RPIout, RDMin
Se pasa la dirección de búsqueda de la próxima instrucción que está en el RPI al registro de
dirección de memoria, el cual está conectado a la memoria por medio del bus de direcciones.
Es una operación de lectura/escritura la memoria va a buscar la dirección de trabajo al bus de
direcciones.
2. READ
Efectúa la lectura de la memoria. La operación READ lo que hace es enviar una señal de
lectura a la memoria, abrir la compuerta de salida que está entre el RDM y el bus de
direcciones permitiendo asi que el contenido del RDM esté en dicho bus, y abrir la compuerta
de entrada que está entre el bus de datos y el RBM permitiendo asi que el contenido del bus
de datos se almacene en el RBM.
La memoria al recibir la señal efectuará la operación de lectura tomando como dirección de
búsqueda la del bus de direcciónes y hará presente el contenido de dicha dirección en el bus
de datos.
3. WAITfmc
Hasta que la operación con la memoria no se haya terminado se mantendrán las compuertas
abiertas de salida del RDM y de entrada del RBM. El WAIT bloquea la CPU hasta recibir la
señal que envía la memoria y entonces cierra las compuertas abiertas anteriormente. (fmc =
función de memoria completada).
4. CLEAR Y
De esta manera se ponen todos los bits del registro Y en cero.
Página 13
Organización del Computador I
Microprogramación
la ALU la operación que debe realizar. La ALU tomará el contenido del registro Y y del bus,
por eso simultáneamente se hace RPIout. Por lo tanto va a sumar :
Registro Y 0
Bus [RPI] RPI
Carry 1 .
Registro Z [RPI]+1
6. Zout, RPIin
Se pasan el resultado de la operación anterior al RPI.
7. RBMout, RILin
El contenido del RBM se carga en la parte baja del registro de instrucción (RIL), es decir en el
primer byte.
Lo que hacen los pasos 4, 5 y 6 es incrementar el RPI en uno. El resto de los pasos efectúan
la operación de búsqueda de la instrucción en memoria para luego cargarla en el registro de
instrucción. Con lo que hicimos hasta ahora se cargó el primer byte del RI, por lo que falta
cargar el segundo byte. Para esto se repiten los siete pasos anteriores con la diferencia que en
el último de ellos se carga la parte alta del RI.
8. RPIout, RDMin
9. READ
10. WAITfmc
11. CLEAR Y
12. RPIout, CARRYin=1, ADDsa, Zin
13. Zout, RPIin
14. RBMout, RIHin
16. END
Esta microoperación avisa que terminó de ejecutarse la instrucción, y la Unidad de Control
arranca de nuevo para buscar la próxima instrucción.
Página 14
Organización del Computador I
Microprogramación
Nota: En este ejemplo no se tuvieron en cuenta los códigos de condición para no hacer
compleja la comprensión del microprograma.
Analizando nuevamente el ejemplo anterior vemos que se puede mejorar el ciclo de búsqueda
(disminuir la cantidad de microinstrucciones). Las microinstrucciones 2 y 3 se pueden hacer
simultáneamente ya que se puede hacer el pedido de lectura y esperar a que se complete. De
la misma manera se puede poner el Registro Y en cero y en la misma microinstruccion realizar
la operación de suma. Estos pasos se repiten en las microinstrucciones 9 y 10 y 11 y 12. Con
estos cambios es ciclo de FETCH sería :
1. RPIout, RDMin
2. READ, WAITfmc
3. CLEAR Y, RPIout, CARRYin=1, ADDsa, Zin
4. Zout, RPIin
5. RBMout, RILin
6. RPIout, RDMin
7. READ, WAITfmc
8. CLEAR Y, RPIout, CARRYin=1, ADDsa, Zin
9. Zout, RPIin
10. RBMout, RIHin
======== Decodificación ========
1. RPIout, RDMin
2. READ, WAITfmc, CLEAR Y, RPIout, CARRYin=1, ADDsa, Zin
3. Zout, RPIin
4. RBMout, RILin
5. RPIout, RDMin
6. READ, WAITfmc, CLEAR Y, RPIout, CARRYin=1, ADDsa, Zin
7. Zout, RPIin
8. RBMout, RIHin
======== Decodificación ========
Página 15
Organización del Computador I
Microprogramación
En este punto notamos que no se pueden superponer más microinstrucciones debido a que
cada una utiliza una información distinta en el bus. Este microprograma demoraría 6 tiempos
(de ejecución de una microinstrucción) en llevarse a cabo, pero como tiene dos operaciones
con la memoria, la microoperación WAIT retardará su ejecución el tiempo que tarde la
memoria en responder.
Podríamos hacer que ese retraso afecte lo menos posible y esto lo conseguiremos reubicando
la microoperación WAITfmc en la microoperación anterior a que uno necesite la información
pedida. Realizando esta última modificación el Ciclo de Fetch quedará :
Con esto hemos alcanzado una versión muy optimizada del Ciclo de Fetch, hecho fundamental
dado que el mismo se ejecutará cada vez que la CPU ejecute cualquier instrucción.
Página 16
Organización del Computador I
Microprogramación
Para llevar el control sobre la microinstrucción del microprograma que se debe ejecutar, hay
un contador (mPC : MicroProgram counter) dentro de la Unidad de Control que dirá el
número de microinstrucción que se debe efectuar. Del análisis del Fetch se desprende que
siempre comienza con un valor inicial que se irá incrementando de a uno con cada
microinstrucción que se ejecute.
¿Que pasa una vez que se ejecutó la microinstrucción 6? Debe ejecutar la primer
microinstrucción del microprograma correspondiente a la instrucción que levantó. Dicha
microinstrucción tendrá un número dentro de la Unidad de Control, el cual estará relacionado
con el código de operación de la instrucción.
Nota: Debido a las características de nuestro assembler y para no hacer complejo el mapa de
microinstrucciones de la Unidad de Control adoptaremos la notación que el comienzo de cada
microprograma coincida con la microinstrucción siguiente al Fetch. Para poder efectuar
bifurcaciones incondicionales o saltos tenemos la microinstrucción BRANCH n donde ‘n’ es
un número que indica la microinstrucción a ejecutar.
3.5 Instrucciones
Las instrucciones que no usan operandos en memoria son aquellas que trabajan sólo con
registros. La mayoría de las instrucciones modifican los códigos de condición.
Luego de cada operación de la ALU se modifican los códigos de condición del registro AX;
cuando interese retener su valor debe ser transferirlo al registro EST. Como no se puede
transferir medio byte (4 bits) primero se cargará el registro AX, con la parte alta del registro
EST; luego se opera con la ALU, y por último se copia el contenido de AX en la parte alta de
EST.
Página 17
Organización del Computador I
Microprogramación
FETCH
======== Decodificación ========
6) ESTHout, AXin
7) CXout, Yin
8) BXout, ADDsa, Zin
9) AXout, ESTHin
10) Zout, CXin, END
FETCH
======== Decodificación ========
6) RPIout, RDMin, READ, CLEAR Y, CARRYin=1, ADDsa, Zin
7) Zout, RPIin, WAITfmc
8) RBMout, OP1Lin
9) RPIout, RDMin, READ, CLEAR Y, CARRYin=1, ADDsa, Zin
10) Zout, RPIin, WAITfmc
11) RBMout, OP1Hin
12) OP1out, RDMin, READ, WAITfmc
13) RBMout, DXLin,
14) OP1out, CLEAR Y, CARRYin=1, ADDsa, Zin
15) Zout, RDMin, READ, WAITfmc
16) RBMout, DXHin, END
Ejercicio: En la instrucción anterior no se tuvieron en cuenta los códigos de condición. Una vez
concluida la lectura del presente capítulo, implementar las microinstrucciones
correspondientes.
Página 18
Organización del Computador I
Microprogramación
FETCH
======== Decodificación ========
6) RPIout, RDMin, READ, CLEAR Y, CARRYin=1, ADDsa, Zin
7) Zout, RPIin, WAITfmc
8) RBMout, OP1Lin
9) RPIout, RDMin, READ, CLEAR Y, CARRYin=1, ADDsa, Zin
10) Zout, RPIin, WAITfmc
11) RBMout, OP1Hin
12) OP1out, RPIin, END
Página 19
Organización del Computador I
Microprogramación
Estos registros tienen la propiedad de que en el tiempo de una microinstrucción pueden poner
presente su contenido en un bus y a la vez almacenar la información que hay en el otro bus, es
decir, en una microinstrucción pueden efectuarse las microoperaciones: RXin, RXout.
Bus A Bus B
AX
Y
ALU
Analizando los contenidos de los buses A y B en los 3 tiempos antes descriptos, estos son:
Bus A Bus B
Tiempo 1 ? AX
Tiempo 2 AX + 1 AX
Tiempo 3 AX + 1 AX + 1
Página 20
Organización del Computador I
Microprogramación
4.2 Funcionamiento
Nota: Para que no haya conflicto de información se deben tener en cuenta que :
a) No se debe habilitar la compuerta de salida de más de un registro a la vez, ya que
el contenido del bus sería impredecible.
b) No operar con la ALU (ALUout) y a la vez habilitar la compuerta de comunicación
G, debido a que se produciría en el Bus A una situación análoga a la anterior en el
Bus B.
Página 21
Organización del Computador I
Microprogramación
4.4 Instrucciones
FETCH
======== Decodificación ========
6) ESTHout, Gon, Xin
7) CXout, Gon, Yin
8) BXout, ADDsa, ALUout, CXin
10) Xout, Gon, ESTin, END
FETCH
======== Decodificación ========
6) ESTHout, Gon, Xin
7) IF ~P, BRANCH 90
8) RPIout, Gon, RDMin, READ
9) RPIout, CLEAR Y, CARRYin=1, ADDsa, ALUout, RPIin, WAITfmc
10) RBMout, Gon, OP1Lin, TRALin
11) RPIout, Gon, RDMin, READ
12) RPIout, CLEAR Y, CARRYin=1, ADDsa, ALUout, RPIin, WAITfmc
13) RBMout, Gon, OP1Hin, TRAHin, PCaux=14, BRANCH 300
14) TRAout, Gon, RPIin, END
90) RPIout, CLEAR Y, CARRYin=1, ADDsa, ALUout, RPIin
91) RPIout, CLEAR Y, CARRYin=1, ADDsa, ALUout, RPIin, END
Así como se han analizado dos tipos de configuraciones, en forma análoga pueden estudiarse
otros tipos de estructuras.
Página 22
Organización del Computador I
Microprogramación
5. Optimización
En la transmisión de señales se utiliza una línea por cada señal. Así, para transmitir n señales
serán necesarias n líneas, lo cual en ciertas ocasiones resulta muy costoso y puede llegar a ser
dificultosa su construcción.
Para solucionar este inconveniente y siempre que las señales no ocurran simultáneamente, se
puede utilizar un codificador que reduzca la cantidad de líneas que se transmiten, y luego un
decodificador que hace el proceso inverso. El codificador tiene como entrada n líneas y como
salida Log2 n .
Entrada Salida
I0α I0 I1 I2 I3 I4 I5 I6 I7 O0 O1 O2
I1α αO0 1 0 0 0 0 0 0 0 0 0 0
I2α 0 1 0 0 0 0 0 0 0 0 1
I3α Codificador αO1 0 0 1 0 0 0 0 0 0 1 0
I4α 0 0 0 1 0 0 0 0 0 1 1
I5α αO2 0 0 0 0 1 0 0 0 1 0 0
I6α 0 0 0 0 0 1 0 0 1 0 1
I7α 0 0 0 0 0 0 1 0 1 1 0
0 0 0 0 0 0 0 1 1 1 1
Este codificador posee 8 entradas (de I0 a I7) y 3 salidas (de O0 a O2), y en la tabla se
muestra la codificación de la entrada. Notar que no figura en la tabla más de una entrada
activada, entonces si llega a ocurrir esto, no podrá ser reconocida y será incierta la salida, por
lo cual se concluye que dicha entrada no está permitida.
Entrada Salida
αO0 I0 I1 I2 O0 O1 O2 O3 O4 O5 O6 O7
I0α αO1 0 0 0 1 0 0 0 0 0 0 0
αO2 0 0 1 0 1 0 0 0 0 0 0
I1α Decodificador αO3 0 1 0 0 0 1 0 0 0 0 0
αO4 0 1 1 0 0 0 1 0 0 0 0
I2α αO5 1 0 0 0 0 0 0 1 0 0 0
αO6 1 0 1 0 0 0 0 0 1 0 0
αO7 1 1 0 0 0 0 0 0 0 1 0
1 1 1 0 0 0 0 0 0 0 1
Página 23
Organización del Computador I
Microprogramación
I0α αO’0
I1α αO0 ----------------------- I’0α αO’1
I2α αO’2
I3α Codificador αO1 ---------------------- I’1α Decodificador αO’3
I4α αO’4
I5α αO2 ----------------------- I’2α αO’5
I6α αO’6
I7α αO’7
Nota: De aquí en adelante se trabajará con el esquema de un bus a menos que se indique lo
contrario.
µoperac RPIin RPIout Zin Zout RBM out RDMin RI Lin RI Hin ADDsa READ WAIT fmc CLEAR CARRYin=1
. Y
µinstruc
.
0 0 1 1 0 0 1 0 0 1 1 0 1 1
1 1 0 0 1 0 0 0 0 0 0 1 0 0
2 0 0 0 0 1 0 1 0 0 0 0 0 0
3 0 1 1 0 0 1 0 0 1 1 0 1 1
4 1 0 0 1 0 0 0 0 0 0 1 0 0
5 0 0 0 0 1 0 0 1 0 0 0 0 0
Para este microprograma se necesita como mínimo 13 bits, para cada microoperación. Si se
considera el conjunto de microoperaciones usadas para todos los microprogramas, se puede
Página 24
Organización del Computador I
Microprogramación
observar que dicho conjunto es muy grande, lo cual implica una gran cantidad de bits. Se verá
a continuación la forma de reducir la cantidad de bits.
Del análisis de la tabla anterior se puede ver que hay microoperaciones que no se ejecutan
simultáneamente, como por ejemplo Zin y Zout o RPIout, Zout y RBMout. Estas
microoperaciones que no se ejecutan simultáneamente pueden ser agrupadas en un campo
codificado. Se pueden agrupar las siguientes microintrucciones en los siguientes campos:
Como se observa para estas microoperaciones hubieran sido necesarios 3 bits y de esta
forma se utilizan unicamente 2. Con este agrupamiento la tabla queda :
La cantidad de bits necesaria para efectuar las microinstrucciones se redujo de 13 a 10. Los
bits de los campos A, B y C van a un decodificador de la siguiente forma :
A B C
a0 a1 b0 b1 c0 c1
ò ò ò ò ò ò
Decodificador Decodificador Decodificador
ò ò ò ò ò ò ò ò ò ò ò
NT RPIout Zout RBMout RPIin Zin RILin RIHin NA READ WAITfmc
Página 25
Organización del Computador I
Microprogramación
Microinstrucciones
â â â ... â â
Decodificador
â â â ... â â
Microoperaciones { AXout RPIin Zout ... READ WAITfmc
Entonces, con este criterio, es posible agrupar las operaciones de la ALU en un grupo, y en otros
las operaciones con la memoria, las de bifurcación, las condicionales (IF), las compuertas de
salida de los registros y en varios grupos las de entrada (según su uso).
Del análisis de una tabla similar a la efectuada anteriormente, que incluya todas las
microinstrucciones, se puede determinar y completar el agrupamiento más conveniente de las
microoperaciones.
Página 26
Organización del Computador I
Microprogramación
Las de las compuertas de salida se podrán agrupar en F6 debido a que no se habilitará más
de una a la vez.
Página 27
Organización del Computador I
Microprogramación
Con el agrupamiento realizado se logra reducir de 44 bits (uno para cada microoperación) a
17 bits, sin restringir la capacidad de las microinstrucciones.
Página 28