Dpto.

de Automática
1

EL MICROPROCESADOR MC68000:
UN EJEMPLO DE ARQUITECTURA MICROPROGRAMADA


1. INTRODUCCIÓN

Algunos de los beneficios que
tradicionalmente se exponen acerca de la
microprogramación son:

• regularidad, lo que disminuye la
complejidad de la unidad de control;
• flexibilidad, lo que facilita los cambios en
el diseño; y
• costes de diseño reducidos.

A continuación se describe la estructura
de la unidad de control del microprocesador
MC68000 de Motorola aparecido en 1979. Esta
unidad de control es microprogramada en dos
niveles y fue diseñada poniendo especial atención
a las limitaciones tecnológicas del momento:
restricciones sobre el tamaño del circuito,
velocidad del circuito, complejidad de las
interconexiones y número máximo de patillas del
integrado.


2. ALGUNAS IDEAS SOBRE LAS
LIMITACIONES TECNOLÓGICAS DEL
MOMENTO

En 1978, momento en el que se
terminaba de desarrollar el microprocesador
MC68000, el arquitecto de computadores tenía
que contar con las siguientes barreras
tecnológicas:

• densidad de integración de puertas
limitada.
• velocidad máxima limitada.
• dificultades de interconexión de elemen-
tos en el chip.
• limitaciones en el número de patillas.


2.1. Densidad de integración de puertas
limitada.

Existía (y existe) un límite en la densidad
de integración de puertas en un circuito integrado.
Aunque este límite es cada vez más alto hay que
tenerlo en cuenta siempre a la hora de diseñar un
procesador.




2.2. Velocidad máxima limitada.

La velocidad de trabajo de los circuitos
tiene un límite impuesto por la máxima disipación
de potencia en el interior del integrado. Este
problema se debe añadir al que genera la lentitud
de acceso a la memoria principal del sistema. La
velocidad de acceso a la memoria puede
mejorarse pero siempre a costa de un gran
desembolso económico.

2.3. Dificultades de interconexión de
elementos en el chip.

La interconexión de elementos dentro del
integrado puede consumir mucha más superficie
de Si que las propias puertas lógicas que lo
componen. Por otra parte, las conexiones han de
hacerse siempre sobre la superficie, es decir, no
se pueden tirar cables más allá de los límites del
integrado. En algunos casos puede ser mejor
duplicar elementos funcionales en distintas
localizaciones del integrado para dar un mismo
servicio a bloques diferentes.

Respecto a esto, se observa que ocupan
mucho menos estructuras regulares tales como
arrays de memoria que otros circuitos lógicos
menos ordenados.


2.4. Limitaciones en el número de patillas.

La tecnología del empaquetamiento limita
el número de patillas que puede tener un
integrado. En 1978 los encapsulados normales
contaban entre 24 ó 40 patillas considerando el
número de 64 como un límite muy lejano. Estas
restricciones en el número de patillas se pueden
eludir mediante la multiplexación en el tiempo del
uso de las mismas pero la ralentización resultante
no suele ser aceptable.


3. LÓGICA CABLEADA FRENTE A
MICROPROGRAMACIÓN

La implementación de microprogramación
en el MC68000 supuso la utilización de esta
técnica por primera vez en Motorola. A pesar de
la falta de experiencia de los arquitectos de la
compañía y de la brevedad de los plazos para
La unidad de control

2

finalizar el diseño se optó por ella debido a las
grandes ventajas que ofrecía en el momento:

• regularidad y flexibilidad; y
• nitidez en las funciones de reloj.


3.1. Regularidad y flexibilidad

La complejidad de la unidad de control
decrece con la regularidad que introduce la ROM
de control usada en la microprogramación. Esto
además reduce el tiempo de diseño.

Por otra parte, la integración en Si se
hace más simple y es más fácil depurar los
errores.

Finalmente, una vez determinada la
estructura de control, se puede trabajar en
paralelo en el diseño sin tener que tomar
decisiones que se dejaran hasta el final cuando
se escriba el microcódigo completo.

Ademas podemos hablar de otros
beneficios:

• el tamaño en Si es menor ya que se
reduce la complejidad de interconexión.
• es muy fácil realizar simulaciones.
• se pueden añadir nuevas instrucciones
en el futuro con más que escribir una
nueva ROM de control sin tener que
rediseñar todo el circuito.


3.2. Nitidez en las funciones de reloj

La utilización del reloj se hace más clara
de forma que se pueden calcular con mas
precisión los retardos introducidos por diferentes
elementos y ajustar mejor el periodo de reloj sin
introducir incrementos dados por tolerancias.


4. ROM DE CONTROL INTEGRADA EN EL
CHIP O FUERA DE ÉL

Sería muy conveniente poder poner la
ROM de control fuera del integrado del
procesador de forma que se evitaran las
limitaciones de tamaño. Sin embargo esto no es
posible debido a la limitación en el número de
patillas. Esta restricción reduce el ancho de la
palabra de control. Para poder trabajar con
palabras de control con un pequeño número de
bits hemos de recurrir a dos soluciones:

• realizar microprogramación vertical; o
• multiplexar el uso de las patillas.

Ambas soluciones ralentizan el sistema.
La primera por que requiere decodificación y la
segunda debido al secuenciamiento en el acceso
a la palabra de control.


5. MICROPROGRAMACIÓN HORIZONTAL
FRENTE A VERTICAL

Ambas técnicas tienen sus ventajas y sus
inconvenientes. Respecto a la microprogramación
horizontal podemos enumerar las siguientes
ventajas:

• la microprogramación horizontal no
requiere decodificación y por tanto puede
atacar directamente los elementos de la
unidad de ejecución sin necesidad de
lógica combinacional.
• la decodificación necesaria para las
palabras de control verticales lleva
asociado un retardo que ralentiza las
operaciones.

Respecto a la microprogramación vertical
podemos dar las siguientes ventajas:

• el tamaño que ocupan en Si las
palabras verticales es mucho menor que
el de las horizontales.
• las palabras de control horizontales
tienden a estar repetidas en la ROM de
control mientras que las verticales se
suelen escribir una sola vez.

Una solución híbrida entre ambas es el
utilizar dos niveles de microcódigo. El primer nivel
(nivel de microprogramación) está absolutamente
codificado. En lugar de decodificarse se toma
como una dirección que apunta a una palabra de
control residente en otra memoria de control (nivel
de nanoprogramación).


6. MICROPROGRAMACIÓN EN DOS NIVELES

En la estructura de control de dos niveles
cada macroinstrucción es ejecutada como una
secuencia de microinstrucciones. Las mi-
croinstrucciones son estrechas y consisten
fundamentalmente en punteros a nanoins-
trucciones del segundo nivel. Las microins-
truciones también contienen información nece-
saria para soportar el secuenciamiento y las
bifurcaciones dentro de la microsecuencia.
Las nanoinstrucciones son anchas y
contienen todas las señales de control necesarias
para operar sobre la unidad de ejecución. Las
nanoinstrucciones se pueden situar
aleatoriamente en su ROM de control ya que se
ARQUITECTURA DE COMPUTADORES

Dpto. de Automática
3

accede a ellas mediante punteros en lugar de
secuencialmente. Por otra parte, solo se necesita
tener una sola copia de cada palabra de control
diferente sin importar cuantas veces sea utilizada
por la microsecuencia. Esto conlleva un ahorro de
tamaño en superficie de Si tal y como se prueba
más adelante en el apéndice.


Figura 1. Modelo de microprogramación en dos
niveles.


Existe un modelo de microprogramación
en dos niveles algo más complejo. En él cada
microinstrucción especifica una secuencia de
nanoinstrucciones. El procesador MC68000 no
fue finalmente diseñado con esta técnica por dos
razones: la primera es que las secuencias de
nanoinstrucciones tienden a ser muy cortas (dos o
tres) con lo que no se consiguen grandes
ventajas; y segundo que sería inevitable el escribir
varias veces una misma palabra de control en la
ROM de 2º nivel a no ser que se proporcione a
este nivel algún tipo de capacidad de bifurcación.


7. IMPLEMENTACIÓN DE LA UNIDAD DE
CONTROL DEL MC68000

Una vez seleccionado el tipo de
implementación para la unidad de control
hubieron de resolverse otros muchos problemas.
Algunos de estos problemas son la minimización
del tamaño de la ROM de control, la aceleración
del funcionamiento de la unidad de control y la
interconexión de la unidad de ejecución con la de
control.

La minimización del tamaño de la ROM
de control se consigue haciendo un
secuenciamiento explícito en el que se procura
compartir al máximo secuencias de código.

La acelaración de la velocidad de trabajo
de la unidad de control se consigue haciendo que
la búsqueda de la nanoinstrucción se realice en
paralelo con la búsqueda de la siguiente
microinstrucción.

Finalmente los problemas de inter-
conexión se resuelven colocando la ROM de
control directamente encima de la unidad de
ejecución. Los campos del formato de la
nanoinstrucción tienen tal disposición que caen
muy cerca de los diferentes bloques de hardware
que controlan.


Figura 2. Diagrama del interconexionado de
bloques en Si .


8. LA UNIDAD EJECUCIÓN DEL MC68000

La unidad de ejecución o data path del
procesador MC68000 cuenta con 8 registros de
direcciones (A0 - A7) de 32 bits cada uno y otros
8 registros de datos (D0 - D7) de 32 bits. El banco
de registros de direcciones permite operaciones
de 16 y 32 bits mientras que el banco de registros
de datos permite operaciones de 8, 16 y 32 bits.
Todos los registros de ambos bancos son
accesibles al programador. Además tenemos un
registro contador de programa al que se tiene un
acceso restringido y una serie de registros no
accesibles al programador que se utilizan para
guardar datos temporalmente.

El conjunto de todos los registros se
divide en tres secciones tal y como ilustra la
figura 3. La división está hecha de forma que los
registros se dividen en parte alta (A0 - A7 HIGH y
D0 - D7 HIGH) y parte baja (A0 - A7 LOW y D0
- D7 LOW). Cada una de las secciones cuenta
con una unidad aritmética. Dos buses
interconectan todos los bloques de cada sección
y, a su vez, las secciones están concatenadas
entre si utilizando buffers bidireccionales que
permiten enlazar o aislar cada una de ellas. La
sección en la que está localizada la parte baja del
banco de registros de datos tiene una unidad
aritmética y lógica de capacidad completa. Esta
sección se denomina sección de datos y puede
NIVEL DE MICROINSTRUCCIÓN
MICROCONTROL
1 nivel
er
puntero a
nanoinstrucción
siguiente
microinstrucción
NIVEL DE NANOINSTRUCCIÓN
NANOCONTROL
2º nivel
palabra de control
ALU
SUSTRATO DE SILICIO
decodificador de selección de operación en ALU
interconexiones
La unidad de control

4

realizar operaciones especiales tales como
manipulación de bits o empaquetamiento y
desempaquetamiento de datos.
La arquitectura descrita permite realizar
cálculos en datos y direcciones de forma
simultánea gracias a los buffers bidireccionales
que conectan los buses. Por ejemplo, es posible
realizar una suma registro-registro
concurrentemente con un incremento en el
contador de programa.

La implementación de esta arquitectura
ha sido posible debido al uso de celdas RAM de
dos puertos de manera que son capaces de
volcar su contenido en cualquiera de los dos
buses que tiene cada sección.

(parte baja)
(16 bits)
BANCO DE
REGISTROS
DE DIRECCIONES
UNIDAD
ARITMÉTICA
(parte baja)
(parte baja)
(16 bits)
DE DATOS
BANCO DE
REGISTROS
UNIDAD
ARITMÉTICA
Y
LÓGICA
UNIDAD
DE
FUNCIONES
ESPECIALES
UNIDAD
ARITMÉTICA
(parte alta)
(parte alta)
(16 bits)
BANCO DE
REGISTROS
DE DIRECCIONES
(parte alta)
(16 bits)
DE DATOS
BANCO DE
REGISTROS


Figura 3. Diagrama de bloques simplificado
de la unidad de ejecución del MC68000.


9. EL JUEGO DE INSTRUCCIONES DEL
MC68000

El juego de instrucciones que soporta el
MC68000 consiste fundamentalmente en ope-raciones
con uno o dos operandos de tamaño byte, palabra (16
bits) o doble palabra (32 bits). Las operaciones se
realizan normalmente entre registros o entre memoria y
registro con la excepción de las transferencias de datos
que pueden darse entre dos posiciones de memoria.

A la hora de diseñar la unidad de control se
supuso que el juego de instrucciones estaba cerrado,
es decir, no se consideraba ninguna posible
actualización. Por ello, la primera versión del procesador
asumió que los códigos de operación y los formatos de
instrucción permanecerían siempre tal y como se
habían definido aunque se dejaron huecos entre los
códigos de operación originales para permitir una
expansión posterior del juego de instrucciones.

Respecto al formato del juego de instrucciones
se impusieron algunas restricciones que tienen
importantes consecuencias. Estas limitaciones son:

1. Ciertos campos, tales como los
identificadores de registros, ocupan campos localizados
en posiciones fijas de manera que pueden ser extraídos
directamente del formato de la instrucción. Esto tiende a
reducir el tamaño de la memoria ROM de control y
simplifica la decodificación de la instrucción.

2. La selección de registro y de función de ALU
tiende a permanecer sin cambios durante la ejecución
de una instrucción. Los identificadores de los registros y
de la función de ALU se decodifican del formato de la
instrucción y son encaminados directamente a la unidad
de ejecución puenteando la unidad de control.

3. La unidad de control necesita solamente
contener información acerca de la temporización con
que debe operar un registro o la ALU.

Aprovechando estas características podemos
simplificar la unidad de control y reducir el tamaño de la
memoria ROM de control.


ARQUITECTURA DE COMPUTADORES

Dpto. de Automática 5

de entrada
acarreo
de salida
acarreo
BANCO DE
DE DATOS
(parte alta)
REGISTROS
BANCO DE
DE DIRECCIONES
(parte alta)
REGISTROS
BANCO DE
DE DATOS
(parte baja)
REGISTROS
BANCO DE
DE DIRECCIONES
(parte baja)
REGISTROS
SP (parte alta)
BUS DE DIRECCIONES EXTERNO
32 bits
BUS DE DATOS EXTERNO
16 bits
SP (parte baja)
AT (parte alta) AT (parte baja)
PC (parte alta) PC (parte baja)
DT (parte alta) DT (parte baja)
16 bits
16 bits
ROM
CTES.
MUX
REGISTRO
ROM
CTES.
MUX
ROM
CTES.
MUX
sumador
REGISTRO REGISTRO
sumador ALU
buffer bidireccional
buffer
bidireccional
MUL / DIV

Figura 4. Diagrama de la unidad de ejecución o data path del MC68000.


10. LA ESTRUCTURA DE CONTROL DEL
MC68000

Basándonos en el diseño de la unidad de
ejecución implementada en el MC68000 y en las
restricciones impuestas a los formatos del juego
de instrucciones del mismo, se llega a la
estructura de control que de forma simplificada se
ilustra en la figura 4. La idea básica consiste en
extraer de la palabra de la instrucción toda
aquella información que permanecerá sin cambiar
durante su ejecución, es decir, la información que
no depende del instante de tiempo en el que nos
encontremos. Este conjunto de información
gobernará una serie de señales de control que se
llevan directamente a la unidad de ejecución sin
pasar por la unidad de control.

En una implementación de microcontrol
típica la decodificación de la instrucción genera
una microdirección de comienzo de micro-
programa en la ROM de control. La ROM de
control proporciona entonces un conjunto de
señales de control para la unidad de ejecución y
la microdirección de la siguiente microinstrucción.
La secuencia de microinstrucciones puede verse
alterada por determinadas condiciones generadas
en la unidad de ejecución. Esta información se
toma, por tanto, de la unidad de ejecución y se
procesa convenientemente como información de
estado de secuencia.


La unidad de control

6


Figura 5. Diagrama de bloques simplificado de la
estructura de control del MC68000.


Como ya se ha indicado, se estudió la
implementación de microprogramación de un solo
nivel pero se encontró que era impracticable
en aquel momento debido a que resultaba
demasiado grande para un solo chip. Finalmente,
se pudo conseguir una sustancial reducción del
área de ROM de control gracias a la utilización de
dos niveles de microprogramación. En la figura 5
se ilustra como quedó la estructura de control
para el MC68000.

En una estructura de dos niveles, el
primer nivel (microcontrol) contiene secuencias de
palabras de control que son punteros (nano-
direcciones) al segundo nivel. Este segundo nivel
contiene una ordenación arbitraria de palabras de
control no duplicadas. La eficiencia de esta
estructura doble descansa en dos hechos.

En primer lugar, el número de estados de
control realmente implementados debe ser una
fracción pequeña del número total de posibles
estados de control. Por ejemplo, para el
procesador MC68000 una palabra de control
horizontal tiene del orden de 70 señales
diferentes. Esto nos da un total de 2
70
estados de
control diferentes. La mayor parte de ellos no
tienen ningún valor. La implementación del
conjunto completo de instrucciones de ensam-
blador de este procesador no necesita más de
200 ó 300 estados de control diferentes lo que
representa menos de 2
9
estados de control. Este
conjunto es una fracción realmente pequeña del
total y puede ser direccionado con 9 bits, es decir,
solo necesitamos incluir un campo de 9 bits por
cada microinstrucción.



Figura 6. Diagrama de bloques simplificado
de la estructura de control del MC68000.


En segundo lugar, debe de darse una
cierta redundancia en el uso de las
nanoinstrucciones para que sea efectiva la
reducción de área de Si empleada en
implementar la ROM de control. Si la
correspondencia fuera uno a uno entre la
dirección incluida en el primer nivel y la palabra de
control accedida en el segundo, la dirección del
primer nivel sería sustituida por la palabra del
control de la nanoinstrucción y se eliminaría el
segundo nivel de ROM de control. En realidad los
punteros se repiten del orden de 2 ó 3 veces cada
uno en el procesador MC68000 de forma que
lo repetido es de menor tamaño que las palabras
de control a las que apuntan.

Otro parámetro que influye en el área de
Si ocupada por la unidad de control es como de
profunda es la codificación de la palabra de
control. En el sistema del MC68000, cada palabra
de control del primer nivel está representada por
una dirección. Esta nanodirección puede
considerarse como la máxima codificación de la
palabra de control ya que hay una
correspondencia unívoca entre direcciones y
palabras de control. La ROM de control de
segundo nivel se puede ver como una simple
tabla que sirve para traducir estados codificados a
su significado horizontal en señales de control.
Esta tabla sustituye a la lógica combinacional
necesaria para desarrollar un código en sus
correspondientes activaciones y desactivaciones
de conmutadores en la unidad de ejecución.

UNIDAD DE EJECUCIÓN
y de función de ALU
señales de selección de registro
señales de control
DE INSTRUCCIÓN
DECODIFICADOR
DE CONTROL
UNIDAD
INSTRUCCIÓN
REGISTRO DE
UNIDAD DE EJECUCIÓN
señales de control
INSTRUCCIÓN
REGISTRO DE
y de función de ALU
señales de selección
de registro
condiciones
UNIDAD DE CONTROL
DE INSTRUCCIÓN
DECODIFICADOR
DIRECCIÓN
DIRECCIÓN
CONTROL
de salto
selección
ROM DE MICRO CONTROL
tamaño estimado
640 x 10
ROM DE NANO CONTROL
tamaño estimado
280 x 70
INSTRUCCIONES
BUFFER
de
instrucción en ejecución
instrucción que se está extrayendo
instrucción que se está decodificando
ARQUITECTURA DE COMPUTADORES

Dpto. de Automática 7

Por otra parte, las palabras de control
están divididas en pequeños campos (hasta un
total de 38) en los que se codifica información
para gobernar el funcionamiento de algún bloque
de la unidad de ejecución. Estos campos se
hayan físicamente encima de los elementos que
gobiernan y son decodificados de forma rápida
con un hardware sencillo ya que no contienen
muchos bits (del orden de 2 ó 3). De esta manera
las palabras de control en ROM tienen 70 bits
mientras que el número total de conmutadores en
la unidad de ejecución del MC68000 es de 180.


11. PROBLEMAS DE LA
MICROPROGRAMACIÓN EN DOS NIVELES
DEL MC68000

El objetivo de la implementación de
microprogramación en dos niveles fue conseguir
reducir el área de Si empleada en la unidad de
control. Esta superficie fue significativamente
reducida pero en contraste aparecieron algunos
problemas.

El primero de los problemas que nos
encontramos es que los accesos a memoria no
son instantáneos. Además, en una estructura de
dos niveles dichos accesos han de ser
secuenciales. Sin embargo la alternativa, es decir,
los circuitos combinacionales de decodificación,
tampoco trabajan en tiempo cero. Para conseguir
acelerar la lectura de la memoria se recurre a
técnicas de prebúsqueda, solapamiento de
accesos y acceso simultáneo a varias palabras.

Otro problema es el retardo asociado a
los saltos condicionales. Visto en una primera
aproximación tenemos que la evaluación de una
condición en la unidad de ejecución afecta a la
secuencia de ejecución de la siguiente
microinstrucción y seguidamente afecta a la
secuencia de ejecución de nanoinstrucciones.
Para minimizar el tiempo invertido en realizar esta
serie de reajustes se recurre a lecturas
simultáneas de varias palabras de control
seleccionando finalmente solo aquella que
convenga de acuerdo a la evaluación de la
condición. En otros casos se comprueba como de
las dos posibles ramas de un salto una está
privilegiada por darse en más ocasiones. En ese
caso es deseable realizar la prebúsqueda de la
rama más probable. Este es el caso de la
instrucción 'decrementar y saltar si no cero'
(bucles) en la que el salto tiene una probabilidad
muy alta y por tanto, la prebúsqueda minimiza
grandemente los retardos asociados a los bucles.

Los mecanismos de bifurcación deben
estudiarse con detenimiento ya que los saltos son
muy comunes. En el procesador MC68000
encontramos que en el primer nivel de
microprogramación se da una media de un salto
por cada dos microinstrucciones leídas. La
implementación de mecanismos eficientes de
bifurcación es crítica a la hora de proporcionar
tiempos de ejecución suficientemente cortos con
unidades de control microprogramadas.


12. OTROS ASPECTOS A TENER EN CUENTA

12.1. Minimización

Se ha procurado que los microprogramas
contuvieran el mayor número posible de palabras
de control comunes. Para conseguir esto se
recurre a almacenar los operandos en registros
intermedios de forma que las operaciones a
realizar dependan muy poco de los operandos y,
por tanto, tengan palabras de control iguales.

También se ha tenido en cuenta el
detectar fracciones de microcódigo que se repiten
de modo que pueda saltarse a ellas dentro de la
ROM de control del primer nivel. Estas
secuencias suelen corresponder a los finales de
las microrutinas.


12.2. Sencillez de la estructura

La sencillez de la unidad de ejecución
lleva a una microprogramación más fácil. Es por
ello que la unidad de ejecución del MC68000
es muy sencilla tal y como se puede ver en la
figura 4.


13. APÉNDICE: Reducción del tamaño de la
memoria de control con dos niveles de
microprogramación.

Sean las siguientes variables:

n: número de señales de control
diferentes en la arquitectura de un
procesador (o dicho de otro modo,
número de conmutadores presentes
en la unidad de ejecución). Este
parámetro es el ancho de una palabra
de control (microinstrucción) horizontal
(sin codificar).

k: número total de microinstrucciones
(palabras de control) necesarias para
implementar todas las instrucciones (o
dicho de otro modo, número total de
estados de control que ejecutan el
conjunto de instrucciones del juego).

La unidad de control

8

ρ: relación entre el número de mi-
croinstrucciones no repetidas (únicas) y el
número total de microinstruciones
necesario para implementar todo el juego.


13.1. Tamaño de una unidad de control
microprogramada en un solo nivel.

Una unidad de control microprogramada
en un solo nivel cuenta con una única memoria
ROM de control. Suponemos que el
secuenciamiento es explícito y que la micro-
programación es horizontal. Si k es el número de
microinstrucciones y cada una de ellas contiene
una palabra de control de n bits y una dirección de
la siguiente microinstrucción, tendremos el
siguiente tamaño:

( )
T
1
k n log
2
k = ⋅ +
(1)



Figura 7. Unidad de control microprogramada en
un solo nivel.


13.2. Tamaño de una unidad de control
microprogramada en dos niveles.

En una unidad de control micropro-
gramada en dos niveles contamos con dos
memorias ROM de control. En la primera (nivel de
microprogramación) se sustituye la palabra de
control por una dirección (nanodirección) que
hace referencia a la segunda memoria (nivel de
nanoprogramación) en la que se han escrito las
palabras de control no repetidas.

El ancho de la nanodirección vendrá dado
por el número de palabras de control diferentes,
es decir,

v = k ρ ⋅ (2)

El tamaño del primer nivel será por tanto
al ancho de la nanodirección más el ancho de la
microdirección:

( ) k log
2
v log
2
k ⋅ +
(3)

El tamaño del segundo nivel vendrá dado
por el número de palabras de control no repetidas
(nanoinstrucciones) y el número de señales de
control que contienen:

n v ⋅
(4)

El tamaño total será la suma de las
ecuaciones (3) y (4).

( ) T
2
k log
2
v log
2
k n v = ⋅ + + ⋅
(5)


Figura 8. Unidad de control microprogramada en
dos niveles.


13.3. Comparación de tamaños.

El objetivo es que T
2
sea menor que T
1
.
¿Para que valores de n, k y ρ es cierto esto? En
primer lugar debemos tener una idea de los
rangos en los que se mueven estos parámetros
para procesadores reales. Tenemos que:

n ∈ (20, 750)
k ∈ (50, 8500)

Vamos a representar en primer lugar el
tamaño utilizado para implementar una unidad de
control microprogramada en un nivel y en dos
niveles con diferentes ρ en función de k para un n
fijo.

log k
2
n
k
MEMORIA DE CONTROL
DE UN SOLO NIVEL microinstrucciones
BITS DE CONTROL DIRECCIÓN DE LA SIGUIENTE
MICROINSTRUCCIÓN
k
log k
2
microinstrucciones
nanoinstrucciones
MICROCONTROL
1 nivel
er
v
n
NANOCONTROL
2º nivel
log v
2
ARQUITECTURA DE COMPUTADORES

Dpto. de Automática 9



Figura 9. Gráfica comparativa de tamaños de
unidad de control microprogramada en un nivel y
en dos niveles para diferentes valores de ρ y en
función de k para n fijo.



Figura 10. Gráfica comparativa de tamaños de
unidad de control microprogramada en un nivel y
en dos niveles en función de n para k fijo.



13.4. Microprogramación en dos niveles
en el MC68000

Para el procesador MC68000 tenemos
que:

n =70
k =650
ρ =0,4
v =260

De donde:

T
1
=650 · (70 +log
2
650) =52.400 bits
T
2
= 650 · (log
2
260 + log
2
650) +
70 · 260 = 30.550 bits

T
2
/ T
1
=0,58
∆T =T
1
- T
2
=21.850 bits


13.5. Microprogramación en un nivel
en el 8088

Como ejemplo de microprogramación en
un solo nivel tenemos el procesador 8088 de
INTEL. Para este los parámetros son los que
siguen:

n =21
k =504
ρ =desconocido
v =desconocido

De donde:

T
1
=504 · (21 +log
2
504) =15.120 bits

Es significativo notar que el número de
señales de control que se manejan en este
procesador es muy pequeño en comparación con
las 70 del MC68000. Esto es debido a la
arquitectura de la unidad de ejecución y, por otra
parte, a una mayor codificación de la palabra de
control.

La ROM de control implementada
realmente en el 8088 tiene un tamaño menor del
obtenido como consecuencia de realizar los
cálculos anteriores. La reducción es de
aproximadamente un 30% el tamaño es de
10.584 bits y se debe a que las fracciones de
microcódigo que se hayan repetidas en las
microrutinas no se escriben varias veces sino que
se bifurca a ellas siempre que es posible.

Tamaños de memorias de control en 1 y 2 niveles
0
50000
100000
150000
200000
250000
300000
350000
400000
450000
0 1000 2000 3000 4000
k
Tamaño
n =100
1 nivel
2 niveles
ρ =0,4
ρ =0,6
ρ =0,2
ρ =0,8
Tamaños de memorias de control en 1 y 2 niveles
0
50000
100000
150000
200000
250000
0 20 40 60 80 100
n
Tamaño
1 nivel
2 niveles
k =2000
La unidad de control

10


14. REFERENCIAS

• Documento AR235 de MOTOROLA. Sigmicro
Newsletter. Volumen 9. Número 4. Diciembre
1978.

• M68000 Family Programmer's Reference
Manual. MOTOROLA, 1992. Referencia
documento: M68000PM/AD Rev. 1.

• M68000 Microprocessor User's Manual. Ninth
Edition. MOTOROLA, 1993. Referencia
documento: M68000UM/AD Rev. 8.

• Organización de Computadores. Un enfoque
estructurado. Andrew S. Tanenbaum. Prentice
Hall, 1992.

• Sistemas Digitales. Ingeniería de los
Microprocesadores 68.000. Antonio García
Guerra y Enrique Fenoll Comes. Editorial Centro
de Estudios Ramón Areces, S.A., 1993.

• Frequently Asked Questions (FAQ) about 68K
chips. Dirección Internet:
http://www.lib.ox.ac.uk/internet/news/faq/archive/
motorola.68k-chips-faq.html, febrero 1996.