Академический Документы
Профессиональный Документы
Культура Документы
Organizacin
de computadoras/Un
enfoque estructurado
4
L NIVEL DE MICROPROGRAMACION
37. Cul sera el efecto de agregar una tercera lnea de entrada a la compuerta NAND
que selecciona a PIO en la figura 3-53(b), si esta nueva lnea se conectara a A13?
38. Escriba un programa que simule el comportamiento de una matriz de m x n de
compuertas NAND de dos entradas. Este circuito, contenido en un chip (pastilla),
tiene) patas de entrada y k de salida. Los valores), k, m y n son parmetros dados
al tiempo de compilacin. El programa debe empezar leyendo una lista "de conexionado" donde cada hilo especifique una entrada y una salida. Una entrada es
una de las) patas de entrada o la salida de alguna puerta NAND. Una salida es tina
de las k patas de salida o una entrada a alguna puerta NAND. Las entradas no usadas estn a 1 lgico. Despus de leer la lista de cableado, el programa debera
imprimir la salida de cada una de las 2j combinaciones de entradas posibles. Los
chips (pastillas) con matrices de compuertas como stas son muy utilizadas para realizar circuitos integrados a medida (segn pedido de un cliente), ya que la mayora
del trabajo (el depsito de la matriz de puertas en el chip, o pastilla) es independiente del circuito a realizar. Slo el conexionado es espec fico de cada diseo.
39. Escriba un programa que lea dos expresiones booleanas arbitrarias y diga si representan la misma funcin. El lenguaje de entrada debe contener letras como variables booleanas, los operadores AND, OR y NOT, as como parntesis. Cada
expresin se debe ajustar a una solalnea. El programa debe realizar el cmputo de
las tablas de verdad para ambas funciones y compararlas.
40. Escriba un programa que lea una coleccin de expresiones booleanas y calcule los
arreglos de 24 x 50 y de 50 x 6 que se necesitan para realizar la PLA de la figura
3-16. El lenguaje de entrada debe ser el mismo que el del problema anterior.lmprima los arreglos.
182
Organizacin
de computadoras/Un
enfoque estructurado
Cap. 4 El nivel de microprogramacin
Como la arquitectura del nivel de microprogramacin, denominada microarquitectura, est definida por el hardware, suele ser primitiva y dificil de programar. Por ejemplo, a menudo son importantes las consideraciones de tiempos. Esto llev a Rosin (1974) a definir la microprogramacin como "el diseo
de sistemas ms o menos razonables por medio de la interpretacin sobre mquinas irracionales".
.
.
El nivel de microprogramacin tiene una funcin especfica: ejecutar mtrpretes de otras mquinas virtuales (ms o menos razonables). El objetivo n~tural de diseo es la obtencin de una organizacin considerablemente optimizada para la extraccin, examen y ejecucin de instrucciones del nivel de
mquina convencional y, en algunos casos, de otras ms complejas. En este captulo examinaremos los principios y soluciones intermedias que hay que considerar en el diseo y organizacin de este nivel.
Empezaremos nuestro estudio del nivel de microprogramacin revisando
brevemente los elementos bsicos estudiados en el captulo 3, ya que son parte
de la arquitectura del nivel de microprogramacin y, por tanto, de inters para
el microprogramador (persona que escribe microprogramas, no un programador pequeo). Luego entraremos en el meollo del tema, explicando de modo
pormenorizado cmo pueden construirse instrucciones complejas a partir de secuencias de instrucciones ms primitivas. La explicacin se apoyar en un ejemplodesarrollado detalladamente. Despus examinaremos los factores que deben
tenerse en cuenta al disear elnivel de microprogramacin de una computadora, para entender mejor por qu tiene determinada estructura. Tambin se
abordarn algunas formas para mejorar el desempeo de la computadora. Por
ltimo, se examinar el nivel de microprogramacin de los dos ejemplos que se
han venido usando, las familias lntel y Motorola.
183
Nmero de bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 O
lo 1 O lo
1 101 O 11 1011
1 1
1O 1
1 lo 1011 101
Desde el punto de vista conceptual, los registros son lo mismo que la memoria
prncipal; la diferencia estriba en que los registros estn ubicados en el procesador mismo y, por tanto, se puede acceder a ellos en lectura y escritura ms rpidamente que a la memoria principal, la cual suele estar fuera del chip (pastilla).
No~malmente, las mquinas mayores y ms caras tienen un nmero mayor de
registros que las ms pequeas y econmicas; stas tienen que usar la memoria
principal para guardar los resultados intermedios. En algunas computadoras el
nivel de microprogramacin dispone de un grupo de registros numerados desde
0, 1, 2... , hasta n-I, denominado memoria local o memoria de anotaciones.
Un registro puede caracterizarse por un nico nmero, es decir, por cuntos
bits puede guardar. La figura 4-1 muestra un registro de 16 bits con la convencin de numeracin de bits usada en este libro. La informacin que se guarda
en un registro permanece en l hasta que otra la reemplaza. El proceso de leer la
informacin de un registro no afecta a su contenido. En otras palabras, cuando
se lee un registro, lo que se hace es una copia de su contenido, dejando inalterado el original.
4.1.2. Buses
Un bus es un conjunto de alambres que se usan para transmitir seales en
paralelo. Por ejemplo, los buses se utilizan para permitir que el contenido de un
registro se copie en otro. A diferencia de los buses del sistema que se estudiaron
e.nel captulo 3, stos slo conectan dos dispositivos, de modo que no hay necesidad de lneas de direcciones o-lneas extensivas de control. Por lo general son
suficientes las n lneas de datos y una o dos de control. Se emplean buses, pues
la transmisin paralela de todos los bits a la vez, es mucho ms rpida que la
transmisin serial bit por bit.
Un bus puede ser unidireccional o bidireccional. Un bus unidireccional
puede transferir informacin en un solo sentido; en cambio uno bidireccional
puede transferirla en los dos sentidos, pero no simultneamente. Los unidireccionales suelen usarse para conectar dos registros, uno de los cuales siempre es
fuente y el otro siempre destino. Los bidireccionales suelen usarse cuando hay
una coleccin de registros, cualquiera de los cuales puede ser fuente o destino.
Muchos dispositivos tienen la posibilidad de conectarse y desconectarse
elctricamente de los buses a los que estn conectados fsicamente. Estas cenexiones pueden abrirse y cerrarse en cuestin de nanosegundos. Un bus cuyos
r
i
184
. ..
Organizacin
de computadoras/Un
enfoque estructurado
Cap. 4
.
..
iedad se llama bus triestado, porque cada lnea
dispositivos teonganoes~:s~~~~ctada. Su.ele utilizarse cuando hay muchos dispopuede estar a , a
..
,
..
ueden suministrar informacin a un bus.
SltIV;S ~U~~YOra de las microarquitecturas algunos registr.os estn conectados
a un: o ms buses de entrada y a uno o ms de salida. La figura 4-2(a) muestra
Bus de
en! rada
Regi stro
de 8 bits
D2
D,
Do
D3
D6
Ds
D4
D7
r-L---,
_'----,
,---'--,
r-'-
_'--
r---'-
r-'--
r-'--
!>
r-
>
!>
f>
1>
!>
!>
TITTTTT
Seale
de
contro I
OE
(al
16
16
Al bus A
Del bus C
4.1.3. Multiplexores
decodificadores
Al bus B
16
CK
OEl
OE2
Ibl
Fig. 4-2. (a) Delalle de un registro de 8 bits c?nectado a bus conducro) de entrad~
ya airo de salida. (b) Representacin simblica de un registro de 16 bits con u
bus de cm rada y dos de salida.
185
Los circuitos que tienen una o ms lneas de entrada y que calculan uno o
varios valores de salida determinados nicamente por las entradas actuales se
llaman circuitos combinacionales. Dos de los ms importantes son los multiplexores y los decodificadores. Un multiplexor tiene 2" entradas de datos (lneas individuales o buses), una salida de datos de la misma anchura que la entrada y
una entrada de control de n bits que selecciona una de las entradas y la encamina a la salida. La figura 4-3(a) muestra un multiplexor con dos buses de entrada. La seal de control de un bit selecciona A o B como salida. La figura 3-12
muestra el circuito de un multiplexor de 8 entradas.
Bu s de
sal ida
l!
El nivel de microprogramacin
'"
El inverso del multiplexor es el demultiplexor, que encamina su nica entrada a una de sus 2" salidas, segn el valor que tengan sus n lneas de control.
Otro circuito combinacional importante es el decodificador, que tiene 11
lneas de entrada y 2" de salida, numeradas desde O hasta 2"-1. Si el nmero que
hay en las lneas de entrada es k, entonces se pone a 11a salida k, permaneciendo las dems a O. Un decodificador tiene siempre una y una sola salida al, estando a O las restantes. La figura 4-3(b) ilustra simblicamente un decodificador de 4 a 16. La figura 3-14 muestra el circuito de un decodificador de 3 a 8.
Organizacin de computadoras/Un
186
enfoque estructurado
Cap. 4
El nivel de microprogramacin
So
S,
187
Entrada
B
ti ti
Entrada
Fo
F,
Control
Multiplexor de 2 a 1
F(A. B)
Salida
(a)
(b)
Salida
lb)
(a)
El inverso del decodificador es el codificador, que tiene 2" en.trad.as Yn salidas. Slo puede haber una lnea de entrada a 1 y su nmero, en bmano, aparece
en la salida.
4.1.4. Unidades aritmticas
lgicas
registros de corrimiento
6'
Aunque algunas ALU pueden realizar tambin operaciones de desplazamiento, la mayora de las veces es necesaria una unidad especfica. Este circuito
puede desplazar su entrada un bit a la izquierda o a la derecha, o tambin no realizar ningn registro de corrimiento. La figura 4-4(b) muestra el smbolo que
utilizaremos para registros de corrimiento; la figura 3-17 muestra el circuito de
un desplazador algo ms sencillo.
4.1.5. Relojes
Los circuitos de las computadoras funcionan normalmente al ritmo de un
reloj, dispositivo que emite una secuencia peridica de impulsos. Estos impulsos definen los ciclos de mquina. Durante cada ciclo tiene lugar alguna actividad bsica, como la ejecucin de una microinstruccin. A menudo es til dividir los ciclos en subciclos, para que las partes de una microinstruccin puedan
realizarse en un orden bien definido. Por ejemplo, las entradas en la ALU deben estar disponibles y estabilizadas antes de que pueda almacenarse su salida.
La figura 4-5(a) simboliza un reloj de cuatro salidas. La de arriba es la salida
principal; las otras tres se derivan de ella al someterla a distintos retardos. La
salida principal [lnea superior de la figura 4-5(b)] tiene un ancho de un cuarto
de ciclo. Las otras tres estn retrasadas uno, dos y tres veces el ancho del impulso. El resultado es un circuito que divide cada ciclo en cuatro subciclos idnticos. Para ms detalles, vase la figura 3-21.
El diseador de computadoras puede hacer que cuatro transiciones diferentes tengan lugar en cierto orden dentro de un ciclo activando cada una de ellas
con el AND lgico de la seal habilitadora y una lnea de reloj distinta. Primero
se disparar la transicin asociada a la lnea principal de reloj, luego la que est
asociada a la lnea de reloj de menor retardo y as sucesivamente.
188
Organizacin
de computadoras/Un
enfoque estructurado
Cap. 4
El nivel de microprogramacin
CPU
189
Bus
Direccin
"
Control
"
Reloj
Entrada de datos
Salida de datos
Control
r7:7:77t>.,-<;:1}:::;:", '
--,.dl""::::u"":.::'''':~e""::::d"":.::""t:::~:)::,
'
"
--~----
MBR
__
_Jf-
(b)
(a)
Seal RO
Seal WR
Fig. 4-6. Dos registros que se utilizan para los buses de direcciones y datos.
4.1.6. Memoria
:1
,k
!I'
,I
principal
de direcciones del sistema siempre estn permitidas [o, posiblemente, slo durante las lecturas y las escrituras, lo que requiere una lnea de permiso de salida
conectada al OR lgico de RD y WR(no mostrada en la figura)]. La lnea de
control del MBR hace que los datos se carguen del bus "Entrada de datos" en
el lado de la CPU. El bus "Salida de datos" est siempre permitido.
'
El bus de datos del sistema es bidireccional, sacando el contenido del MBR
cuando WR est activa y cargndolo cuando se activa RD.,
4.1.7. Encapsulado
de los componentes
190
Organizacin de computadoras/Un
enfoque estructurado
191
DJ
DJ]]]
m m
DJ]]]
DJ]]]
ALU
[[]
rn rn
[[]
rn rn
TIPICA
Una vez estudiados todos los' componentes bsicos con los que se construye
el nivel de microprogramacin,
es el momento de ver cmo se interconectan.
Como los principios generales en esta rea son pocos y dispersos, abordaremos
el tema por medio de un ejemplo detallado.
~;,,,o'"
corrimiento
(b)
(e)
Fig. 4-7. Tres modos de construir una computadora. (a) Pastillas MSI. (b) Rebanadas de bit. (e) Pastilla LSI.
Tomando, por ejemplo, 32 de esas pastillas y ponindolas una al. lado de otr~,
obtendramos una mquina con 32 registros, una ALU, un registro de.corrimiento, etc., todos de 32 bits.
..
. En esta forma podramos construir una mquina.d~ .16 bits con so10.16 ?a.stillas. Las rebanadas de bit dan al diseador la pOSIbilidad d~, construir f~ClImente una mquina de cualquier longitud de palabra. Tambl,en hay pastlll.as
con rebanadas de 2 o 4 bits. La figura 4.7(b) muestr.a. un~, rnaquma de 8 bits
construida con 4 rebanadas de 2 bits. En general, la utilizacin de r~ba~adas requiere menos pastillas y mucho menos tiempo de diseo que la de circuito MSI,
pero normalmente produce mquinas ms lentas.
.
Una tercera forma de combinar los componentes consiste en poner el procesador completo en una pastilla [vase la figura 4-7(c)]. A pesar de que reduc~ de
modo extraordinario el nmero de pastillas (a una sola), ~dolece de desventajas.
Primero, la tecnologa necesaria para integrar un gr~n n~me~o de compone~tes
en una pastilla es diferente de la utilizada en lo~ Clf:Ult?S mte~rados de tipo
MSI o en los de rebanada de 1 bit y suele producir m~quI?as mas lentas ..Adems , las tcnicas de diseo y fabricacin son extraordinariamente complicadas
192
O rgaruzacion
. .. d e computadoras/Un
enfoque estructurado
Cap. 4
El nivel de microprogramacin
193
Bus B
es un circuito combinacional, es decir, calcula continuamente la salida en funcin de las entradas y el cdigo de funcin. Si no los hubiera, habra problemas
cuando se calcule, por ejemplo, A: = A + B. A medida que A fuera cargndose, el valor del bus A empezara a cambiar, lo que haria que la salida de ALU y,
por tanto, el bus e cambiaran tambin. En consecuencia se guardara un valor
incorrecto en A. En otras palabras, en la asignacin A: = A + B, el A del lado
derecho debe ser el valor original que A, no una extraa mezcla de bits del valor
anterior y reciente. Insertando registros buffer en los' buses A y B, podemos
congelar los valores originales de A y B al principio del ciclo, de modo que ALU
se aisle de los cambios en los buses a medida que el nuevo valor se vaya guardando en la memoria de anotaciones. La carga de estos buffers est controlada
por Lo y L.
Vale la pena sealar que la solucin (v.g., insertar biestables al frente de
la ALU) no es la nica. Si en vez de biestables, todos los registros son del tipo
flip-flop, entonces es tambin posible un desempeo de dos buses, cargando los
operandos al inicio del ciclo en los buses A y B y leyendo el resultado en uno de
stos ms adelante en el cliclo. Los intercambios entre los diseos de dos y
tres buses abarcan complejidad, paralelismo y cantidad de alambrado. Un tratamiento ms detallado de estos aspectos est ms all del alcance de este libro.
Para la comunicacin con la memoria, hemos incluido en la rnicroarquitecturaun MAR y un MBR. El MAR puede cargarse a partir del registro de B, en
paralelo con una operacin de la ALU. La lnea M, controla la carga del MAR.
En las escrituras se puede cargar el MBR con la salida del registro de corrimiento, en paralelo con el almacenamiento en la memoria de anotaciones o en lugar
de l M controla la carga del MBR a partir de la salida del registro de corrimiento M2 y M3 controlan las lecturas y escrituras de memoria. En las primeras, los
datos ledos de la memoria pueden presentarse en la entrada izquierda de la ALU
a travs del multiplexor A, representado en la figura 4-8 por Amux. La lnea de
control Ao determina si el biestable A o el MBR se alimentan en laALU. La
microarquitectura de la figura4-8 es similar a la de muchos de los circuitos comerciales de rebanadas de 1 bit disponibles.
Al bus de direcciones
Salida de Lo
. direcciones:
Entrada de datos
Ao
4.2.2. Microinstrucciones
, i
Salida de datos
Para controlar la trayectoria de datos de la figura 4-8 se requiere de 61 seales. De acuerdo a sus funciones, stas se pueden dividir en nueve grupos que a
continuacin se describen.
de este captulo.
194
Organizacin
de computadoras/Un
enfoque estructurado
195
Bits
I I I
I I I
I I I
1 1 1 1 1
A C
MM
M O ALU
SH BA RIW E
U N
O R N
R R
C
X
I
I
AMUX
CONO
o=
= Buffe de A
1 = MBR
No salta
1 = Salta si.N = 1
2 = Salta si Z = 1
J = Salta siempre
ALU
= A + B
1 = AY8
2 = A
3=A
AOOR
I I I I I I I
SH
=
1 =
2 =
J =
No desplaza
Desplaza 1 bit a la derecha
Desplaza 1 bit a la izquierda
(no utilizado)
o=
No
1 = Si
,
;1;
!!
1IL
J
Con los valores de las 61 seales podemos realizar un ciclo de nuestra ruta
de datos. Un.ciclo consiste en vaciar los valores en los buses A y B, almacenarlos temporalmente en los registros de A y B, en pasarlos a travs de la ALU
y el registro de corrimientos y en almacenar el resultado en la memoria interna y
en el MBR o en ambos. Adems, puede cargarse el MAR e iniciarse un ciclode
memoria. Como primera aproximacin, podramos tener un registro de.control
de 61 bits, cada uno de ellos, para una seal de control. Un bit a 1 significa que
laseal est activada yuno.aOque no loest.
Sin embargo, podemos reducir en mucho el nmero de bits que necesitan
para controlar la ruta de datos, al precio de un pequeo incremento en la
circuitera. Para empezar, tenemos 16 bits para controlar laentradaal bus A, lo
que permite 216 combinaciones de los registros. Desafortunadamente,
slo estn permitidas 16: cada uno de los 16 registros, excluyendo los dems. Por tanto, podemos codificar la informacin del bus A en 4 bits y utilizar un decodificador para generar las 16 seales de control. Lo mismo vale para el bus B.
Esta situacin es algo diferente en el bus C. En principio, es posible tener almacenamientos mltiples en la memoria de anotaciones, pero esta prctica es
casi siempre intil y la mayora de las mquinas no la permiten. As pues, tambin podremos codificar el control del bus C con 4 bits. Habiendo ahorrado 3
x 12 = 36 bits, necesitamos ahora slo 25 bits de control para activar la ruta
de datos, Lo y L1 siempre se necesitan en un momento determinado del ciclo de
mquina, por lo que puede activarlos el reloj, quedando 23 bits de control. Una
seal adicional, no estrictamente necesaria pero a menudo til, es aquella que
permite o inhibe el almacenamiento del bus C en la memoria interna. En algunas situaciones slo interesa generar las seales N y Z, pero no se desea almacenar el resultado. Con este bit adicional que llamaremos ENC (habilita C), podemos indicar que se almacene el bus C (ENC = 1) o no (ENC = O).
En este momento estamos en condiciones de controlar la ruta de datos con
24 bits. Notamos ahora que RD puede usarse para cargar el MBR con el bus de
datos del sistema y WR para permitir la salida del MBR al mismo bus. Esta observacin reduce a 22 el nmero de seales de control indspendientes,
El siguiente pas~ en el diseo de la microarquitectura es inventar un format? de nucromstruccir, que contenga 22 bits. La figura 4-9 muestra uno de los posI~les, con d?s c~mpos adicionales, COND y ADDR, que se describirn en seguida. La microinstruccin contiene 13 campos, 11 de los cuales son:
AMUX-
A.
ALU
-FuncindelaALU:O=A+B,
SH
MBR
O = nada, 1 = a la derecha,
ENC
J: O = PC, I =
r
196
II
,1
'1
"
,
i
Organizacin
de computadoras/Un
enfoque estructurado
Cap, 4
El nivel de microprogramacin
197
,----
._I
I
I
I
16
registros
I
I
I
I
RO
t=============~
WR~----~~-----------------------=~
Fjg. 4-10. Diagrama de bloques completo de nuestro ejemplo de microarquitectura,
necesario.
',"1
escritura
En nuestro' eJ~mp.Io Ias rmcrornstruccrones
..
.
i d direcci
sern de 32 bits y el espae o e. rrecciones de microinstruccin
constar de 256 palabras
I
I
memona de control ocupar un mximo de 256 x 32 = 8192 bt~or o que a
Ll Como cualquier otra memoria, la de control necesita un MAR'y un MBR
a~~remos ~I MAR el MPC (Contador de MicroPrograma) porque su u'nl'ca'
..
.
" que va a ejecutarse.' El Mlsk-ser el
f unclon es senala
. r Ia slgu.lente
mstruccion
MIR y~ m.enclOnado. Es Importante darse cuenta de que la memoria de control
y la pnnclp~1 ~on completamente diferentes, teniendo la primera el microprograma y la ultima el programa en nivel de mquina convencional.
198
Organizacin
de computadoras/Un
Cap. 4
enfoque estructurado
En la figura 4-10 se observa que la memoria de control intenta continuamente copiar la microinstruccin direccionada por el MPC al MIR. Sin embargo, el MIR solamente se carga durante el primer subciclo, como indica la
lnea de trazos que 10 conectacon el reloj. Durante los otros tres subciclos no se
altera, independientemente de lo quele suceda al MPC.
Durante el segundo subciclo, el MIR se encuentra estabilizado y sus campos
empiezan a controlar la ruta de datos. En particular, los campos A y B hacen
que los datos salgan a los buses A y B. Los bloques "Decodificador de A" y
"Decodificador de B" del diagrama proporcionan la decodificacin de 4 a 16
de cada campo, necesaria para activar las lneas SAL! y SAL2 de los registros
[vase figura 4-2(b)]. El reloj activa los registros de A y de B durante este ~ubciclo, proporcionando entradas estables a la ALU durante el resto del CIclo.
Mientras los datos salen a los buses A y B, la unidad de "Incremento" de la seccin de control calcula MPC + 1, en preparacin de la carga de la siguiente
microinstruccin en secuencia, durante el ciclo siguiente. La ejecucin de instrucciones se puede acelerar traslapando estas dos operaciones.
En el tercer subciclo se les da a la ALU y al desplazador tiempo suficiente para que produzcan resultados vlidos. El campo demicroinstruccinAMUX
determina la entrada izquierda a la ALU; la entrada derecha es siempre el tampn
de B. Aunque la ALU es un circuito combinacional, el tiempo que emplea en calcular la suma est determinado por el tiempo de propagacin de los acarreos,
no por el retraso normal de las puertas. Mientras la ALU y el desplazador estn
calculando, el MAR se carga con el contenido del bus B, si el campo MAR de la
microinstruccin est a 1.
Durante el cuarto y ltimo subciclo, el bus C se puede almacenar en la memoria de anotaciones y en el MBR, segn los campos ENe y MBR. La caja rotulada "Decodificador de C" toma ENC, la cuarta lnea de reloj y el campo C
de la microinstruccin como entrada y genera las 16 seales de control. En su
interior realiza una decodificacin de 4 a 16 del campo C y entonces hace el Y
lgico de sus salidas con el resultado de hacer el Y lgico del subciclo 4 con
ENC. Por tanto, slo se carga un registro de anotaciones si:
I
1. ENC=l.
2. Es el subciclo 4.
:1\
ti
li
l(
4.2.4. Secuenciamiento
El nivel de microprogramacin
199
de las microinstrucciones
Lo nico que nos queda por ver es cmo se elige la siguiente microinstruccin. Aunque la mayora de las veces basta extraer la siguiente microinstruccin
en secuencia, se necesita algn mecanismo que permita saltos condicionales en
el microprograma para tomar decisiones. Por esta razn dotamos a cada
microinstruccin de dos campos adicionales: ADDR, que es la direccin de un
sucesor potencial de la microinstruccin en curso, y COND, que determina si la
siguiente microinstruccin se extrae deMPC + 1 o de ADDR. Cada microinstruccin contiene potencialmente un salto condicional. Se ha tomado esta decisin porque los saltos condicionales son muy comunes en los microprogramas
y, al permitir que toda microinstruccin tenga dos posibles sucesores, los
microprogramas se ejecutan ms rpido que si se tuviera que ajustar alguna
condicin en una microinstruccin y examinarla en la siguiente. La mayora de
las arquitecturas usan esta estrategia de una forma u otra.
La eleccin de la siguiente microinstruccin la realiza la caja rotulada' 'Lgica de Microsecuenciamiento"
durante el subciclo de 4, cuando las salidas de
la ALU N y Z son vlidas. La salida de esta caja controla el multiplexor M
(Mmux), que encamina MPC + 10 ADDR al MPC, que determinar cul ser
la siguiente microinstruccin a extraer. Hemos proporcionado al microprogramador cuatro alternativas posibles ajustando COND como sigue:
o = No
1.
= Saltar a ADDR si Z =
l.
1 = Saltar a ADDR si N
se toma de MPC
+ 1.
toz
+ ID = DN + IZ + ID
200
Organizacin
de computadoras/Un
enfoque estructurado
si esta ltima comienza una lectura de memoria poniendo RD al, tambin debe
tener RD = 1 en la siguiente que ejecute (que puede estar o no en la posicin siguiente de la memoria de control). El dato no estar disponible hasta que hayan
transcurrido dos microinstrucciones despus de iniciar la lectura. Si el microprograma no tuviera nada que hacer, deber tener slo RD = 1, Y se desperdiciar para cualquier trabajo til. Del mismo modo una escritura en memoria
tambin requerir dos microinstrucciones para completarse.
4.3. UNA MACROARQUITECTURA
TIPICA
Cap. 4
El nivel de microprogramacin
201
[tamao
de los vectores]
typeenlero
vec
= 0 .. 100;
var k: integer;
x, y: vec;
funClion mulp (a, b: entero): integer;
IEsta funcin multipli~a sus dos parmetros y entrega el producto.
Realiza la multlplicaclon por sumas repetidas.]
var p, ;: Inleger;
begin
10: reserva espacio de pila para p y j)
ir (a = O) or (b = O) then
11: SI cualquiera es O, el resultado es O)
mulp: = O
12: la funcin entrega O)
else
begin
p: O;
{3: da valor inicial a p)
for j: = I lo a do
{4: suma de b a p, a veces]
p: p + b;
{5: realiza la suma)
mutp: p
16: asigna el resultado a la funcin)
cnd
end: Imll/pl
202
Organizacin de computadoras/Un
IDEFINE ALGUNOS
SIMBOLOS
K = 4020
X = 4000
y = 3980
A = 4
B = 3
P = I
J = O
V = 4
RESP = 3
SUMA = I
1=0
JUMP
DESP
LODL
JNZE
LOCO
JUMP
ANOTl: LODL
JNZE
LOCO
JUMP
BNOTZ: LOCO
STOL
LOCO
STOL
LODL
PMUL:
\":"'.
';~";
!
,
:.
l,:
iI
; !
LI:
0'0.1
L2:
DONE:
INNER:
LJ:
MAIN
2
A
ANOTZ
O
DONE
B
BNOTZ
O
DONE
O
P
JNEG
L2
JZER
L2
LODL
ADDL
STOL
LOCO
P
B
P
I
ADDL
STOL
SUIlL
JNEG
JZER
LODL
INSP
RETN
DESP
LOCO
STOL
LOCO
STOL
LOCO
ADDL
PSIII
LODL
ADDL
SUBD
PSHI
CALL
A
LI
LI
l'
2
2
O
SUMA
I
I
X-I
I
V
I
CI
PMUL
ICOMIENZA
EN EL
PROGRAMA PRINCIPAL
10
1I
MAIN:
ISALTASIA<>O
12
IRETORNAO
L4:
IAC: = B
ISALTA SI B<> O
12
IRETORNAO
13
IP:= O
14
IJ : = I
IPUEDE EJECUTARSE
LA ITERACION?
1 A < O, NO SE REALIZA
LA ITERACION
1A = O, NO SE REALIZA
LA ITERACION
15
IAC:=P+B
Ir: = P + B
ICOMPROBACION
DE FIN
DE ITERACION
IAC: = J + I
IJ:= J + I
IAC: = J - A
ISALTASIJ<,A
ISALTA SI J = A
16
!7
IRETORNA
18
19
ISUMA: = O
110
11: = I
1II
203
enfoque estructurado
INSP
ADDL
STOL
LOCO
2
SUMA
SUMA
I
ADDL
STOL
SUBD
JNEG
JZER
LODL
PUSH
LODL
POPI
INSP
RETN
I
I
C20
L)
L3
SUMA
DESP
LOCO
STOD
LODD
PUSH
LOCO
ADDD
POPI
LOCO
PUSH
LODD
PUSH
CALL
INSP
ADDD
PUSI
LOCO
ADDD
POPI
LOCO
ADDD
STOD
sUiJD'
INEG
JZER
LOCO
PUSH
LOCO
PUSH
CALL
INSP
LODD
PUSH
CALL
INSP
CALL
IAC: = X + 1- I
IPUSH XIII
1AC : = DIRECCtON
DEL VECTOR
IAC:=
V + I
CI:
I
IV COMIENZA EN I NO EN O 00: 20
IPUSH Vill
IPMUL(XIIJ,
Vil))
RESP
IELlMINA
PARAMETROS
1AC : = SUMA + PMUL( ... )
ISUMA : = SUMA + PMUL( ... )
ICOMPROBACION
DE FIN
DE ITERACION
IAC: = I + I
11:= 1+ I
IAC:=
I-MAX
ISALTA SI 1< MAX
ISALTASII
= MAX
112
IPUSH SUMA
1AC : = DIRECCION DE RESP
IRESP : = SUMA
113
IRETORNA
114
liS
IK NO ES LOCAL
/16
IPUSH K
1 AC : = (DIRECCION)
XI
DE xuj-:
IAC: = X + K - I
K
IX(Kl: = K
117
2
IPREPARA
PMUL(2, ... )
/PREPARA
PMUL(2,K)
K
1APILADOS LOS DOS
PARA METROS
IPMUL(2,K)
PMUL
IELlMINA
PARAMETROS
2
IAC:=2'K+1
CL:
IPREPARA
YIKI : = 2'K + I
IAC:= (DIRECCION DE
Y:CI
YII\)-I
IAC: = Y + K - I
K
IYIKI:=
2'K+ I
ICOMPROBACION
DE FIN
I
DE ITERACION
IAC: = K + I
K
IK : = K + I
K
IAC:= K - MAX
C20.
ISALTASIK<O
L4
ISALTASI
K = MAX
L4
/18
Y
IAPILA DIRECCION DE y
1AC : = DIRECCION DE K
K
IAPILA DIRECCION DE K
ILLAMA A PROCEDIMIENTO
INNER
IELlMINA PARAMETROS
2
/19
K
IPREPARA
WRITELN(K)
OUTNUMI
IRUTINA DE BIBLiOTECA
IELlMINA PARAMETRO
I
IFIN DE TRABAJO
STOP
41
I
K
K
/CONSTANTE
ICONSTANTE
I
20
1
PROGRAMA
PROGRAMA
-----
PC
PUSH 5
PUSH 5
-----
PC
~:::
~:::
~~
:::
SP __..,
SP ---:->-
4015
4016
4016
4017
4017
4018
4018
4019
4019
4020
4020
PILA
PILA
(al
(bl
contigua, que contiene ciertos datos, y de un apuntador a la pila (SP), que dice
dnde est la cima de ese bloque, La base de la pila est en una direccin fija
que no interesa en adelante, La figura 4-12(a) ilustra una pila.que.ocupa.seis pa .
labras de memoria, La base de la pila est en la direccin 4020 y la cima, donde
apunta SP, est en la 4015. Nuestras pilas crecern desde las direcciones altas
de memoria a las bajas, pero la otra alternativa tambin es buena,
Se definen varias operaciones en las pilas, Las dos ms importantes son
PUSH X y POP y (desapila Y), PUSH avanza el apuntador de pila (decrementndolo, en nuestro ejemplo) y luego pone X en la posicin de memoria a la que
ahora apunta SP, PUSH incrementa el tamao de la pila en un elemento, POP
Y, por el contrario, reduce el tamao de la pila guardando el ltimo elemento
en Y, eliminndolo de ella incrementando la direccin del apuntador de pila, La
figura 4-12(b) muestra el aspecto de la pila de la figura 4-12(a) despus de haber
apilado una palabra que contiene un 5,
Otra operacin que puede realizarse en una pila es avanzar el apuntador de
pila sin apilar ningn dato, Esto suele hacerse cuando se entra en un procedimiento o funcin, para reservar espacio a las variables locales, La figura 4-13(a)
204
Organizacin de computadoras/Un
enfoque estructurado
205
Tramo
de pila
para
mulp
398o
3999
4000
111
Tramo
de pila
para
mrlP
intyno
3975
3976
3971
3972
dir. ret,
3973
3974
3975
3976
suma
3976.
suma
3977
dir. reto
3977
dir. ret.
3977
dir. ret.
3978
3978
ans
3978
ans
3979
3979
3979
398O
y [1)
398O
y [1)
398O
[201
3999
y [201
3999
[1)
4000
x 11)
4000
3999
x [1)
4000
4019
k
-sp
3975
1201
4019
4020
-sp
Tramo
de pila
para
397O
4020
4019
k
4020
-SP
[1)
[20J
x [lJ
4019
k
4020
(a)
(b)
le)
Id)
-SP
206
.
'1
Organizacin
de computadoras/Un
enfoque estructurado
instrucciones que usan direccionamiento directo contienen, en sus 12 bits menos significativos, una direccin absoluta de memoria. Estas instrucciones son'
tiles para accesar a las variables globales, como xen la figura 4-11. El direccionamiento indirecto permite que el programador calcule una direccin de memoria, la ponga en AC y lea o escriba la palabra direccionada. Esta forma de
direccionamiento es muy general y se utiliza para accesar a elementos de un vector, entre otras cosas. El direccionamiento local especifica un desplazamiento
respecto al SP y se utiliza para accesar a las variables locales, como ya hemos
visto. Estos tres modos combinados proporcionan un sistema de direccionamiento simple pero adecuado.
La figura 4-14 muestra el juego de instrucciones del Mac-1. Cada instruccin contiene un cdigo y a veces una direccin de memoria o una constante.
La primera.columna de la codificacin binaria de la instruccin; la segunda da
su nombre nemotcnico en lenguaje ensamblador; la tercera tiene su nombre
completo, y la cuarta describe lo que hace mediante un fragmento en Pascal. En
esos fragmentos m[x] significa la palabra de memoria x. As, LODD carga el
acumulador con la palabra de memoria especificada por sus 12 bits menos significativos. Su direccionamiento es, por tanto, directo, mientras que el de LODL;
que carga el acumulador con la palabra situada a una distancia x por encima de
SP, es local. LODD, STOD, ADDD y SUBD realizan las cuatro operaciones
bsicas usando direccionamiento directo: LODL, STOL, ADDL y SUBL las
realizan con direccionamiento local.
Hay cinco instrucciones de salto, una incondicional (JUMP) y cuatro condicionales (JPOS, JZER, JNEG y JNZE). JUMP siempre copia los 12 bits menos significativos al contador de programa, mientras que las otras cuatro slo
lo hacen si se cumple la condicin especificada.
LOCO carga en AC una constante de 12 bits en el rango de O a 4095 (inclusive). PSHI apila la palabra cuya direccin est en AC. La operacin inversa es
POPI, que desapila una palabra y la guarda en la posicin de memoria direccionada por AC, PUSH y POP sirven para manipular la pila de diversas maneras. SWAP intercambia los contenidosde AC y SP, lo que es til cuando hay
que incrementar o decrementar SP en una cantidad desconocida en tiempo de
compilacin. Tambin resulta til inicializar SP al principio de la ejecucin.
Las instrucciones INSP y DESP seutilizan para aumentar o disminuir SP en
cantidades conocidas al momento de la compilacin. Debido a la faltade espacio de codificacin, los desplazamientos se han limitado a 8 bits. Por ltimo, la
instruccin CALL se usa para llamar a un procedimiento, guardando la direccin de retorno en la pila y RETN regresa de un procedimiento, desapilando la
direccin de retorno y almacenndola en el registro PC.
Hasta ahora, la mquina no tiene instrucciones de entrada/salida, ni se le
agregarn, pues no las necesita. En su lugar usa E/S por memoria. Una lectura
de la direccin 4092 dar una palabra de 16 bits con el siguiente carcter ASCII
Nemotcnico
Binario
Instruccin
Significado
OOOOxxxxxxxxxxxx
lOOO
Carga directa
Bc:=mlxl
0001xxxxxxxxxxxx
STOO
Almacena directo
m {X{:=BC
0010xxxxxxxxxxxx
AOOO
Suma directo
0011xxxxxxxxxxxx
SUBO
Resta directo
0100xxxxxxxxxxxx
JPOS
Salta si positivo
jI BC;., Othen pc := x
0101xxxxxxxxxxxx
JZER
Salti si cero
jI BC = Othen pc
0110xxxxxxxxxxxx
JUMP
Salta
pe: = x
0111xxxxxxxxxxxx
lOCO
Carga constante
BC:=x(Os x
1000xxxxxxxxxxxx
lOOl
Carga local
ac:=m{sp+xl
1001xxxxxxxxxxxx
STOl
Almacena
1010xxxxxxxxxxxx
ADDl
Suma local
BC:= ac+mlsp+x]
1011xxxxxxxxxxxx
SUBl
Resta local
ae:= ae-mIsp+xl
1100xxxxxxxxxxxx
JNEG
Salta si negativo
1101xxxxxxxxxxxx
JNZE
Salta si no cero
1110xxxxxxxxxxxx
CAll
Llama a procedo
1111000000000000
PSHI
Apila indirecto
sp:= sp-1;
1111001000000000
POPI
Desapila indirecto
mIsc] :=mIspl;
1111010000000000
PUSH
Apila
1111011000000000
POP
Desapila
Bc:=m{sp];sp:=sp
1111100000000000
RETN
Retorno
1111101000000000
SWAP
Intercambia
ac y sp
11111100yyyyyyyy
INSP
Incrementa
sp
sp:= sp + Y (O S Y S 2551
11111110yyyyyyyy
OESP
Decrementa
local
sp
s 40951
m Ix+ sp]:=Be
mIsp]:=
pe :=x
m{Bc]
sp:= sp + 1
+1.
sp:= sp - Y (O s Y S 255)
xxxxxxxxxxxx
es una direccin de mquina de 12 bits; en la columna
yyyyyyy es una constante de 8 bits; en la columna 4 se llama y.
207
de instrucciones
4 se llama x.
del Mac-I.
208
Organizacin
de computadoras/Un
enfoque estructurado
UN EJEMPLO
= 1, C = 1, B = 1, A = 10
Cap. 4
El nivel de microprogramacin
209
. por ejemplo, donde and se refiere al "y booleano" e inv la inversin. Los
desplazamientos pueden representarse por las funciones desizq si son a la izquierda y desder si son a la derecha, como en
tir : = desizq (tir + tir)
que pone eltir en los buses A y B, realiza la suma y desplaza sta a la izquierda 1
bit antes de almacenarla de nuevo en el tiro
Los saltos incondicionales pueden representarse por sentencias goto y los
condicionales pueden examinar n o Z. Por ejemplo:
if n then goto 27
Las asignaciones y los saltos pueden combinarse en la misma lnea. Sin embargo, se presenta un pequeo problema cuando deseamos examinar un registro pero no almacenarlo. Cmo especificamos el registro que vamos a examinar? Para resolver este problema introducimos la seudovariable alu, a la que
se puede asignar un valor simplemente para indicar el contenido de la ALU.
Por ejemplo,
alu : = tir; ir n thcn goto 27;
significa que se ha de pasar el/ir por la ALU (cdigo ALU = 2) para que se
pueda examinar su contenido. Ntese que el uso de alu significa que ENC = O.
Para indicar las lecturas o escrituras en memoria, simplemente pondremos
rd o wr en el programa fuente. El orden de las distintas parles de una sentencia
210
Organizacin
de computadoras/Un
enfoque estructurado
Cap. 4
A
M
D U
mer : pc;rd
rd
ir ; tnbr
pe := pe + 1
M M
BAR
R R
o: mar:=
E
N
W
D
e e
A ADDR
00
00
00
00
00
15
00
25
22
00
sp:=sp+(-1);
00
69
Sentencia
ll ,
wr
if n then goto 15
ae := inv (mbrl
tir:=
Ishift
(tir);
if n then gota 25
El nivel de microprogramacin
pe; rd ;
1: pe := pe + 1; rd ;
2: ir := mbr ; ir n Ihen goto 28;
3: tir := /shift (ir + ir); ir n Ihen goto 19;
4: tir := /shift (tir); ir n then goto 11;
5: alu := tir ; ir n then goto 9;
6: mar: = ir: rd :
7: rd ;
8: ae := mbr ; goto O;
{ciclo principal}
{incrementa pe}
{salva y decodifica rnbr]
{(XX)x o OOlx?)
{0CXXlo (XX)J?}
{0CXXl= LODO}
oc; wr;
{OOJI
STOD}
12: mar:=
13: rd ;
{0010 = ADDD}
ir; rd :
tir:=
IshiftUr+
22
rd
ir); if n then gota 69
correspondientes.
15: mar
:= ir; rd ;
16: ac:= ae + 1; rd;
17: 0:= lII'(mbr):
18: oc := oc + a; goto O;
INota: x -
{OIOx o Ollx?}
{OIOO o OIOI?}
(OIOO = JPOS)
{realiza el salto}
,I
:' I
ir z Ihen
{001 l = SUBD}
goto 22;
y = x + l + no y}
{OIOI = JZER}
{no se produce el salto}
{OIIOoOIII?}
{OliO = JUMP}
{Ol l l = LOCO}
{IOu o l lxx"]
{IOOx o IOlx?}
(I(XX) o lOOI~}
31: a : = ir + sp :
32: IlUlr:= a; id; golo 7;
{IOOJ = LODL}
33: a : = ir + sp :
34: mar: = o ; mbr := ae;
35: alu := tir:
ir n
1\'1';
goto 10;
36: a : = ir + sp ;
37: mar := a ; rd; goto 13;
3g: (/ : = ir + S(!;
39: mar : 11: rd; goto 16:
{IOOI = STOL}
{IOIO o IOII~}
{IOIO = ADDL}
{IOII =SUBL}
211
212
Organizacin
de computadoras/Un
Cap, 4
enfoque estructurado
{IIOx o Illx'l}
{IIOOoIIOll}
{IIOO
= JNEG)
{IIOI
{IIIO
= CALL)
o;
ir z then
goto
o;
JNZE)
ir n then
goto 50;
57: rd ;
58: mm :=. oc;
59:
+ 1: rd,
addr]
{I I 11000
PSHJ)
{i 111001
POp!}
{IIIIOIO
PUSH}
ID;
wr; gato
60: sp := sp + (-1);
61: mar:= sp : mbr:=
11 1, examina
QC;
62: mar: = sp ; sp : = sp
62;
wr ; goto 10;
1; rd;
63: rd;
64: ae := mbr; goto O;
65: tir := /shift(Tr); ir n then gota 73;
66: alu := tir; ir n then goto 70;
! r.
{IIIIIOI
= SWAP}
RETN}
71:ac:=sp;
72: sp := a; gato O;
73: olu := rir;
ir 11 then
goto 76:
{IIIIIOO
{IIIIIIO"
{IIIIIII
El nivel de microprogramacin
213
INSP}
"DESP}
x - y
x + (-y) = x + (ji + 1) = x + 1 + y
La suma de 1 al AC se hace en la lnea 16, que de otro modo se hubiera desperdiciado, como la 13.
El microcdigo de JPOS comienza en la lnea 21. Si AC<O, la bifurcacin
no se realiza y .IPOS termina inmediatamente saltando de nuevo al bucle (ciclo)
principal. En cambio si AC ) 0, se extraern los 12 bits menos significativos del
1R haciendo el Y lgico de ste con la mscara 007777 y guardando el resultado
en el Pe. No cuesta aqu nada eliminar los bits de cdigo de operacin y por
214
Organizacin de computadoras/Un
mar:
=
<?
enfoque estructurado
215
En otras palabras, podemos empezar la extraccin de la siguiente microinstruccin antes de terminar la ejecucin de la que est en curso. Esta posibilidad es
una forma primitiva de escalonamiento o seriacin. Tambin se puede aplicar el
mismo truco a otras rutinas de ejecucin.
Est claro que una proporcin considerable del tiempo de ejecucin de cada
microinstruccin est dedicado a decodificarla bit por bit. Esta observacin seala que se puede cargar el MPC bajo control del microprograma. En muchas
computadoras existentes la microarquitectura tiene medios fsicos para extraer
los cdigos de operacin de las macroinstrucciones y pasarlos al MPC, donde
efecta una operacin de seleccin mltiple. Por ejemplo, si pudiramos
desplazar el IR 9 bits a la derecha, borrar los 9 bits ms significativos y poner el
nmero resultante en el MPC, podra seleccionar entre 128 localidades, de las
posiciones O a 127. Cada una de esas palabras tendra la primera microinstruccin de la macroinstruccin correspondiente. Aunque este mtodo desperdicia
memoria de control, acelera en gran medida la mquina y, en la prctica, casi
siempre se usa algo parecido.
No hemos dicho nada de cmo se realiza la E/S. Ni tenemos que hacerlo.
Utilizando EIS por memoria, la CPU no es capaz de diferenciar entre direcciones de memoria verdaderas y las de los registros de los dispositivos de E/S.
El microprograma realiza las lecturas y escrituras en las cuatro palabras superiores del espacio de direcciones como si lo hiciera con otras cualesquiera.
4.4.4. Perspectivas
En este punto conviene detenerse un minuto para reflexionar sobre los fundamentos de la microprogramacin. La idea bsica es comenzar con una mquina fsica muy sencilla. La de nuestro ejemplo consta de poco ms que un
grupo de 22 registros, una pequea memoria ROMde control, un sumador mejorado, un incrementador, un registro de corrimiento y algunos circuitos combinacionales para. multiplexar, decodificar y secuencializar. Con este material
fuimos capaces de construir un intrprete programado que llevara a cabo las
instrucciones de la mquina de nivel 2. Con la ayuda de un compilador, podemos traducir programas escritos en lenguajes de alto nivel a instrucciones de nivel 2 e interpretar stas una a una.
Si queremos ejecutar un programa escrito en un lenguaje de alto nive., debemos traducirlo primero al nivel 2 y luego interpretar las instrucciones resultantes. El nivel 2 sirve de interfaz entre el compilador y el intrprete. Aunque, en
principio, el compilador podra generar directamente microcdigo, esto es
complicado y desperdicia gran cantidad de espacio. Cada una de nuestras macroinstrucciones ocupa una palabra de 16 bits, mientras que el microcdigo correspondiente, excluyendo la lgica de decodificacin de instrucciones, requiere 4 microinstrucciones de 32 bits en promedio. Si compilramos directamente a
216
Organizacin de computadoras/Un
enfoque estructurado
Cap. 4
nivel I , la memoria total necesaria se multiplicara por ocho. Adems, la memoria necesaria sera memoria de escriturapara control, que es muchsimo ms cara debido a su gran velocidad. No conviene usar la memoria principal para el
microcdigo, ya.que obtendramos una mquina lenta.
A la luz de estos ejemplosconcretos,
se advertir claramente por qu las mqunas se disean comounaseriede
niveles. Se hacepor razones de eficiencia y
simplicidad, ya que cada nivel seaplica a un nivel de abstraccin distinto. El diseador del nivelO se ocupa de cmo ganar unos pocos nanosegundos en la
ALU utilizando algn nuevo algoritmo que reduzca el tiempo de propagacin
del acarreo. El microprogramador
se interesa en cmo hacer el mximo nmero
de operaciones elementales con cada microinstruccin, aprovechando en lo posible el paralelismo inherente al hardware. El diseador del juego de macroinstrucciones desea proporcionar al escritor de compiladores y al microprogramador una interfaz con la que se puedan sentir a gustoy que, al mismo tiempo, sea
eficiente. Sin duda cada nivel tiene objetivos, problemas y tcnicas diferentes y,
en general, una forma distinta de ver la mquina. Dividiendoel problema del
diseo de la mquina en varios subproblemas, podemos intentar dominar la
complejidad intrnseca del diseo de una computadora moderna.
.
vertical
El nivel de microprogramacin
217
son verticales. Los nombres derivan de la manera en que un artista dibujara sus
memorias de control respectivas: los diseos horizontales tienen un nmero
bastante pequeo de microinstrucciones
anchas; los verticales tienen muchas
microinstrucciones estrechas.
Entre ambos extremos hay muchos diseos intermedios. Nuestras microinstrucciones, por ejemplo, tienen algunos bits, como MAR, MBR, RO, WR y
AMUX, que controlan directamente funciones del hardware. Por otro lado los
camposA, B, C y ALU requieren alguna lgica de decodificacin antes de 'que
puedan aplicarse a compuertas individuales. Una instruccin vertical extrema
tendra solamente un cdigo de operacin, que sera simplemente una generalizacin de nuestro campo ALU, y algunos operandos, como nuestros campos
A, By C. En una organizacin de este tipo se necesitaran cdigos de operacin
para leer y escribir en memoria, hacer microsaltos, etc., porque los campos que
controlan esas funciones en nuestra mquina ya no estaran presentes.
Para distinguir ms claramente entre microinstrucciones horizontales y verticales, vamos a redisear nuestro ejemplo de microarquitectura
y hacer que se
use microinstrucciones verticales. Cada microinstruccin contendr ahora tres
campos de 4 bits, que suman un total de 12 bits, frente a los 32 de la versin orignal. El primer campo es el cdigo de operacin, OP, que dice qu hace la
microinstruccin. Los siguientes campos son dos registros, R 1 y R2. Para los
saltos, se combinan formando un nico campo de 8 bits, R. Una microinstruccin tpica sera ADD, SP, AC, que sumar el AC al SP.
En la figura 4- 17 se muestra la lista completa de cdigos de operacin de las
microinstrucciones de esta nueva mquina que llamaremos Mic-2. En la lista
vemos quecada microinstruccin realiza una nica funcin: si suma, no puede
desplazar ni cargar el MAR, ni siquiera mantener activa la seal RO. Con apenas 12 bits por microinstruccin,
slo hay sitio para especificar una operacin.
Vamos a rehacer la figura 4-10 para mostrar las nuevas microinstru~ciones.
La figura 4-18 muestra el nuevo diagrama de bloques. La ruta de datos, representada a la izquierda, es idntica a la anterior. La mayor parte de la porcin de
control, a la derecha, tambin quedar igual. En particular, an necesitamos el
MIR y la memoria de control (aunque esta vez con anchura de 12 bits, en lugar
de 32). Los tamaos y funciones del MPC, el Mmux, el incrementador, el reloj
y la lgica de microsecuenciamiento
son idnticos a los del diseo horizontal.
Adems, necesitaremos decodificadores de 4 a 16 para los campos RI y R2,
anlogos a los de A, B y C de la figura 4-10.
Las tres principales diferencias entre la figura 4-10 y la figura 4- 18 son los
bloques rotulados ANO, NZ y "Decodificacin de OP". Se necesita AND porque el campo RI lleva tanto el bus A como el C. Se presenta el problema de que
el bus A se carga durante el subciclo 2 pero el bus C no puede cargarse en la memoria interna hasta que se hayan estabilizado los registros de A y B, en el subciclo 3.
218
Organizacin de computadoras/Un
0000
ADD
Suma
,1:=,1+,2
0001
ANO
Y booleano
,1:=,IY,2
0010
MOVE
Mueve registro
,1:= r2
0011
COMPL
Complementa
,1:= inv
0100
LSHIFT
Desplaza a la izquierda
0101
RSHIFT
Desplaza a la derecha
0110
GETMBR
Almacena el MBR
en registro
',1:= rim
0111
TEST
Examina registro
jI ,2< Othan
1000
BEGRD
Comienza lectura
1001
BEGWR
Comienza escritura
1010
CONRD
Continua lectura
lec
1011
CONWR
Continua escritura
ese
1100
!
219
Significado
Instruccin
Binario Nemotcnico
enfoque estructurado
(,2),
n:= true;
jI ,2=0 than
z:= true
(no usado)
1101
NJUMP
Salta si N = 1
jI n than goto
1110
ZJUMP
Salta si Z = 1
il z than goto r
1111
UJUMP
Salta siempre
goto 'r
,=16.,1+,2
con microinstrucciones
verticales.
220
Organizacin
de computadoras/Un
enfoque estructurado
Cap. 4
ALUL
SHL
AMUX
MAR
RO
MSLH
Cdigo de operacin
de microinstruccin ALUH
NZ
ANO
SHH
MBR
WR JMSLL
AOO
ANO
MOVE
COMPL
LSHIFT
RSHIFT
GETMBR
TEST
BEGRO
+
+
+
+
.+
.+
+
+
BEGWR
10
CONRO
11
CONWR
'13
NJUMP
14
ZJUMP
15
UJUMP
+
+
+
12
'11
~
:
1uilli
'.
.....
fj
!II
i,
:Ji
:Ir.
lit
1ft
+ "ABCD
ABD
ABeD
SHH
MAR
221
Ahora viene la parte interesante. Cmo construiremos un circuito de cuatro entradas (los bits de cdigo de operacin) y trece salidas (las seales de control) que calcule la funcin de la figura 4-19? Pues con el uso de una o varias
PLA (o ROM). La figura 4-19 es una forma algo peculiar de representar 13 tablas de verdad, una por columna, de cuatro variables cada una, donde el nmero de fila define implcitamente el valor de las cuatro variables. Entonces la
cuestin de cmo construir el circuito se reduce a cmoimplementar
una tabla
de verdad. La mejor forma de hacerlo consiste en emplear una PLA de cuatro
entradas y 13 salidas. Si no la podemos conseguir, podemos usar tres 74S330,
que son PLA de 12 entradas y 6 salidas. Si denotamos los cuatro bits de cdigo
de operacin con las letras A a D, del ms significativo al menos significativo,
algunas de las salidas son:
ALUL = ABCD
lineas de control
El nivel de microprogramacin
= ABC
222
Organizacin
o:
de computadoras/Un
enfoque estructurado
mar:= pe; rd ;
1: rd ;
pe:= pe + 1;
2: ir:= mbr ;
ir n then
25: a/u:=tir;
goto 11;
27: ae: = ir; {LOCO}
5: atu := tir ;
ir n then
ae
goto 09;
goto O;
IVr;
10: IVr;
goto O;
11: a/u := tir ;
ir n then goto 15;
12: mar:= ir; rd ; {ADDD}
13: rd;
14: a:= mbr ;
ac
~=
band(ac, amask);
goto O;
:=
{STOD}
oc + a;
goto O;
15: mar :=' ir; rd; {SUBD}
16: rd ;
99: ae:= ac + 1;
17: a:= mbr ;
a:=inv(a);
18: ae := ae + a;
goto O;
19: tir := /shift (tir);
ir n then goto 25;
20: alu := tir ;
ir n then goto 23;
21: alu := ae; {JPOS}
ir n then goto O;
22: pe:= ir;
pe : = band (pe , amask);
goto O;
ac := mbr ,
goto O;
33: a: '" ir; {STOL}
a := a + sp ,
34: milr: = a ; mbr :'" ae ; wr;
wr;
goto O;
35: a/u:'" tir ;
ir n then goto 38;
38 a :=,ir{SUBL}
58 a:= mbr ;
a:=a+sp;
39: mar:= a; rd;
rd ;
goto 99;
goto O;
59: alu := tir ;
ir n then goto 62;
60: sp := sp + (-I);{PUSH)
61: mar:'" sp; mbr:= ac; wr;
IVr;
goto O;
62: mar:
63: rd ;
:=
a + sp;
37: '/lUlr:= a; rd ;
rd ;
a:= mbr ;
(lC
:'"
ac + a;
goto O;
del Mic-2.
sp := sp + 1;
64: ac:= mbr ;
goto O;
65: tir:= /shift(tir);
ir n then goto 73;
66: a/u:= tir ;
ir n then goto 70;
67: mar: = sp ; rd ; {RETN}
68: rd ;
sp = sp + 1;
69: pc := mbr ;
goto O;
70: a:= ac; {SWAP}
71:ac:=sp;
72: sp := a;
goto O;
73: a/u:= tir ;
ir n then goto 76;
rd;
36: a:=ir;{ADDL}
= sp ; rd ; {POP}
54: sp := sp + (-1);
55: a:= mbr ;
mar:= sp; mbr;= a; wr;
wr;
goto O;
56: mar: = sp ;rd; {POPl}
57: rd :
sp := sp + 1;
sp
:=
sp + a;
goto O;
223
224
'11
j.
!"
Organizacin
de computadoras/Un
enfoque estructurado
Cap. 4
El nivel de microprogramacin
225
--wbits-
Microprograma
Microprograma
"--wbits-
Nanoprograma
t '--- __
(a)
_'
(b)
226
Organizacin
de computadoras/Un
enfoque estructurado
Cap. 4 El nivel de microprogramacin
gistro en la memoria de control, en lugar de ponerlo en la nanomemoria (es decir, omitiendo el campo del registrode las nanoinstrucciones), las dos microinstrucciones podran apuntar a la misma nanopalabra. Cuando sta se extraiga y
se ponga en el registro de microinstruccin, el campo de registro se tomar de la
micromemoria y no de la nanomemoria.
Naturalmente, con este mecanismo aumenta la anchura de la memoria de
control, que puede o no compensar la ganancia obtenida con una nanomemoria
ms pequea.
AC
Mem
000100
000050
000100
170000
077777
177775
100001
000010
000010
100001
000030
N =O
V=O
010100
N=O
V=O
100002
N = 1
V = 1
077771
N=O
V = 1
100007
N = 1
V = 1
227
a2
racin del. subciclo ..As, cada subciclo dura un determinado nmero de impulsos. Po~ ejemplo, SIA.LV tardara entre 75 y ISO nseg en realizar una operacin,
se podna u~ar un reloj maestro con un periodo de 25 nseg, durando el subciclo
correspondiente entre tres y seis periodos.
Nos que~a averiguar cmo sabe la mquina cunto debe durar un subciclo.
Hay dos P?slbles SO,lu.ciones.Una de ellas es que la microinstruccin tenga cam~os que dlg~n explctarnente los tiempos necesarios. La otra es derivar estos
tiempos basandose en los campos de operacin (utilizando una PLA), de la misma f~rma que se.~eneran las .dems seales de control en una mquina vertical.
~a primera SO~U.CIO~
,cuesta bits de la memoria de control y la segunda cuesta lgica de decodificacin y tiempo.
Otra f?r.~a de obtener mayor potencia de la mquina, consiste en incrementar la nexI~lhdad d.~ los microsaltos condicionales. Como ejemplo, considrese
una macrOInstruCClOn .OMITE SI MENOR, que compare el registro AC con
una pala~ra de ~emofla. ~ salte a la siguiente macroinstruccin si AC es menor.
Para reahz~r la ~nstruCClon, se requiere restar la palabra de memoria de AC (o
de una.copla de este), lo que puede dar como resultado un desbordamiento, como se Ilustra en la figura 4-22.
~ebidoal desbordamiento potencial, no es posible decir, con slo ver el bit
de slg~o del resultado, cual de los operandos era menor. En el cuarto ejemplo
de la figura 4-_2~, AC es menor que la palabra de memoria pero el resultado de
la resta e~ p~sltlva. La co~dicin correcta a probar es N O-EXCLUSIVO V, en
donde V indica la .presencla o ausencia de desbordamiento. (El hardware asigna
a V ~I valor de 1 siempre que el acarreo al bit de signo difiera del acarreo del bit
de signo.)
" Afortunadamente,
l~ mayora de las ALU no slo generan N y Z sino tambien D y A (acarreo). Sin embargo, si slo hubiera cuatrosaltos condicionales
para c~~a uno de los bits NZDA, la macroinstruccin OMITE SI MENOR
re~uenna muc~as microinstrucciones. Para mayor flexibilidad, muchas rnqUll1a.sno pe,r~lten ~xaminar individualmente los bits de estado de la ALU. En
cambio, un Ul1lCObit de. las microinstrucciones provoca el O lgico de los bits
NZDA con los. cuatro bits menos significativos del campo ADDR y se salte al
resul~ado. La figura 4-23 da algunos ejemplos. Si los 4 bits menos significativos
228
Organizacin
de computadoras/Un
NZDA
Direccin
hacia donde
salta
10000000
1001
10001001
10001000
1001
10001001
10001011
1001
10001011
10001011
1000
10001011
10001011
0000
10001011
10001111
0000
10001111
10001111
1100
10001111
10000000
1100
10001100
Campo
DIR
Fig. 4-23. Algunos ejemplos de saltos a mltiples destinos, basndose en los bits
NZDA.
.11,
i
! i
, !
J,
Cap. 4
enfoque estructurado
fueran O, esto se convertira en un salto condicional con 16 alternativas. Si todos fueran 1, se convertira en salto incondicional a una direccin especfica terminada en 1111.
Con esta ayuda la instruccin OMITE SI MENOR sera mucho ms fcil de
interpretar. Elegiramos un campo ADDR que terminara en 0101, como
10000101 (binario), y realizaramos el salto. Las microinstrucciones situadas en
10001101 y 10000111 traern el caso AC < memoria y las situadas en .10000101
y 10001111 tratarn el caso contrario. No se necesita ninguna decodificacin
adicional. Tambin podramos haber usado una direccin de base terminada en
0000, en lugar de la que termina en 0101, pero estas direcciones son muy valiosas, yaque son las nicas disponibles para saltos con 16 posibilidades. Por
tanto, no debe elegirse a la ligera.
Es claro que con este tipo de control del secuenciamiento de las microinstrucciones, la tarea de situar las microinstrucciones en la memoria de control
puede causar verdaderos dolores de cabeza. La primera instruccin ejecutada
despus de un salto de 16 alternativas debe tener un salto incondicional, ya que
la palabra siguiente (excepto si es la ltima) se utiliza como uno de los posibles
destinos del salto. A dnde debera saltar cada una de estas microinstrucciones? Ciertamente no a una direccin de la forma xxxxOOOO,ya que son demasiado valiosas, pero tambin podran necesitarse tarde o temprano las
dems, excepto las de la forma xxxxll11. La decisin debe tomarse con cuidado, evitando agotar algn tipo de direccin. Por ejemplo, una vez que se han
agotado las direcciones pares, ya no es posible verificar el bit de acarreo e, as
que la seleccin de direcciones debe hacerse con mucho cuidado.
229
El nivel de microprogramacin
del R.T.: Cada unidad trabaja en una tarea especfica como en una linea de produccin
industrial.
Ciclo
Extraccin
de instrucciones
Decodificacin
de instrucciones
Clculo de direcciones
Extraccin
Ejecucin
de operandos
la
11
8
2
230
Organizacin
de computadoras/Un
enfoque estructurado
pero tambin podra ser la direccin a la cual salt, llamada blanco del salto.
En virtud de que el extractor de instrucciones no sabe cual sigue sino hasta que
se ejecuta el salto, se demora y no puede continuar hasta la ejecucin de ste.
En consecuencia la lnea se vaca. Slo despus de que termina el ciclo 7, se sabe
qu instruccin sigue.
.
.
A la prdida de cuatro ciclos causada de hecho por el salto se le denomina
penalizacin por salto. Resulta evidente que con un salto en una de cada tres
instrucciones, la disminucin en el desempeo es sustancial.
Se han realizado una gran cantidad de investigaciones alrededor del problema de recuperar algo de este desempeo (DeRosa y Levy, 1987; McFarling y
Hennessy, 1986; Hwu y col. 1989 y, Lilja, 1988). Lo ms sencillo consiste en esperar que el salto no se realice y continuar procesando como si el salto fu~ra una
simpleinstniccin aritmtica. Si resulta que en efecto, el salto no se realiza, no
se ha perdido nada. Si por el contrario el salto se efecta, se deben eliminar las
instrucciones que estn actualmente en la lnea y empezar de nuevo.
Esta opcin presenta sus propios problemas. En algunas mquinas, se
puede modificar un registro como el resultado intermedio de un clculo de direcciones. Si una instruccin eliminada modific a uno o ms registros, estos
deben ser restaurados, lo que significa que debe haberun mecanismo para grabarios valores originales. Resulta instructivo hacer un modelo de la prdida en
el desempeo.
Sea P, la probabilidad
Sea P, la probabilidad
231
una suposicin para cada una de las instrucciones de salto que genera. Suponer
por ejemplo, en las instrucciones iterativas que el salto regresar al inicio de la
iteracin, es correcta la mayora de las veces. Cuando se trata de una condicin
improbable, tal como una llamada al sistema que genera un cdigo de error, es
muy posible que el salto no se lleve a cabo. En muchos casos se utilizan diferentes instrucciones para estos casos y el solo hecho de observar el cdigo de operacin proporciona una buena sugerencia.
.
Otro esquema ms elaborado para los diseadores de mquinas consiste en
proporcionar dos cdigos de operacin para cada tipo de salto y hacer que el
compilador use el primero si cree que el salto se llevar a cabo y el segundo en
caso contrario. En forma alternativa, para programas de uso intensivo, se
pueden correr primero en un simulador, registrando, el comportamiento de cada salto; luego,el programa binario puede "parcharse". con el cdigo de operacin apropiado (probablemente se realice, probablemente no se realice).
En el mtodo de prediccin dinmica, el microprograma construye, durante
la ejecucin, una tabla con las direcciones que contienen saltos y guarda un registro del comportamiento de cada uno. Este mtodo tiende a hacer ms lenta la
mquina al llevar el registro, de modo que requiere de alguna ayuda del hardware. Algunas mediciones han mostrado que de esta manera no es difcil lograr
un 90% de precisin.
La prediccin de los saltos no es el nico punto de ataque. Otra opcin es
determinar por anticipado en la lnea, hacia que direccin ser el salto. Algunas
pruebas, como el salto si es igual son mucho ms fciles de hacer que en salto si
menorque. Las primeras se pueden hacer con un comparador, mientras que las
segundas requieren de un ciclo completo de trayectoria de datos para hacer una
resta. Con este enfoque, siempre que el microprograma encuentre un salto, hace una verificacin rpida en una etapa temprana de la lnea para ver si puede
resolver el salto de inmediato, en cuyo caso sabe en donde continuar con la
extraccin de la siguiente instruccin.
Los compiladores pueden ser de gran ayuda, por ejemplo, cuando el programador escribe una iteracin variando / desde I hasta 10, el compilador puede verificar i para ver si es igual a 10, en vez de ver si es menor de 11, de manera que
el microprograma puede librar la cuestin con una comparacin en lugar de
una resta.
Para ocuparse de aquellos saltos que no se pueden resolver en las primeras
etapas, el compilador puede tratar de encontrar algo til para que la computadora trabaje, mientras espera que se ejecute el salto. Considrese la declaracin
aritmtica seguida de una comparacin, de la figura 4-25(a). Un compilador
con una optimizacin hbil pudiera producir un cdigo ms parecido al de la
figura 4~25(b), el cual no est en lenguaje Pascal legal, pero muestra el orden de
eventos. Primero genera el cdigo para hacer la comparacin, luego hace la
operacin aritmtica. Despus de que el salto ha ingresado en la lnea de proce-
232
Organizacin
de computadoras/Un
Cap. 4
enfoque estructurado
a := b s c;
ir b < e
ir b . e
then declaracin;
a := b + e;
(a)
then declaracin
(b)
Fig. 4-25. (a) Un fragmento en lenguaje Pascal. (b) Como pudiera ser el tratamiento por parle del compilador.
"
,.
! '
r . '.,
samiento, le siguen varias instrucciones ordinarias, las cuales sin lugar.a duda
deben ejecutarse, as que no hay necesidad de hacer ninguna prediccin ni eliminacin. Para usar esta tcnica con efectividad, los microprogramadores y los
diseadores de compiladores tuvieron que trabajar en estrecha coordinacin
durante el diseo .
Si todo lo dems falla, siempreexiste la posibilidad de seguir ambas trayectorias en paralelo. Para hacerlo, se requieren dos lneas de procesamiento en el
hardware y no evita el problema de eliminacin. No obstante, este mtodo se
utiliza en ocasiones en las computadoras de orden superior, en las que el aspecto importante es el desempeo y no el precio. Desde luego, si cadatrayectoria se
topa con otro salto antes de resolver el primero, el asunto .se vuelve an ms
complicado. Probablemente no sea la mejor idea tener" flojeando" algunas
docenas de lneas de procesamiento, para enfrentar el peor de los casos.
Despus de toda esta teora respecto a lo que podrahacerse, regrese por un
momento a la mquina de ejemplo. Esta, no tiene distintas unidades de hardware para extraccin, decodificacin, etc., de modo que no es posible formar
estas lneas de procesamiento, pero con cambios menores al microprograma, se
puede lograr un nmero limitado de traslapes entre las microinstrucciones de
extraccin y ejecucin, lo que tambin es una forma de realizar las lneas.
En la figura 4-10, por ejemplo, si la siguiente microinstruccin pudiera
extraerse de alguna manera durante el subciclo 4, ya no se necesitara el subciclo
1 y el reloj slo generara impulsos para los subciclos 234234234 ... El principal
problema surge con las microinstrucciones de salto condicional. Si la mquina
esperara a que las lneas de estado de la ALU estn disponibles antes de niciar
la extraccin de la microinstruccin siguiente, sera demasiado tarde. El ciclo
habra prcticamente terminado y se podra conseguir poco traslape. En algunas mquinas el problema se resuelve usando las lneas de estado de la ALU del
ciclo anterior que, por supuesto, debern guardarse en biestables para evitar
que se desvanezcan. Estos valores estn disponibles al comienzo de cada
microinstruccin y por tanto puede empezar la siguiente extraccin inmediatamente, mucho antes de que se termine la ejecucin de la microinstruccin en
curso. No es necesario decir que esto complica en gran medida la vida del
microprogramadCJ''.
El nivel de microprogramacin
233
13: rd;
56: rd;
57: mar := sp; sp : sp + 1; rd;
58: rd;
59: mer : ae; wr; goto 10;
(b)
de microinstruc-
234
Organizacin
de computadoras/Un
Cap. 4
enfoque estructurado
El nivel de microprogramacin
235
Tarjeta de memoria
Tarjeta de la CPU
Memoria
principal
Memoria
pequea,
rpida y cara
Memoria grande,
lenta y barata
Bus
llamadas a procedimientos, las instrucciones se extraen de localidades de memoria consecutivas. Es ms, la mayora del tiempo de ejecucin del programa
se emplea en iteraciones, en las que un nmero limitado de instrucciones se ejecutan de manera repetida. En forma parecida, es comn que en un programa
manejador de matrices se efecten muchas referencias a la misma matriz, antes
de cambiar a otra actividad.
Se le llama principio de localidad a la observacin de que las referencias a
memoria realizadas en un intervalo de tiempo corto, tienden a usar slo una
fraccin de la memoria total, y representa la base para todos los sistemas de memoria cach. La idea general es que cuando un palabra es referenciada, se le
trae de la memoria grande y lenta hacia la cach, de modo que la siguiente vez
que se utilice, se pueda accesar muy rpido. En la figura 4-27 se ilustra una
distribucin comn de la CPU, la memoria principal y la cach. Si una palabra
se lee o escribe k veces en un intervalo corto, la computadora necesitar de 1 referenciaa la memoria lenta yk - 1 referencias a la memoria rpida. Entre ms
grande es k, mejor es el desempeo general.
Podemos formalizar este clculo llamado e al tiempo de acceso a la memoria cach, m al tiempo de acceso a la memoria principal y h a la proporcin
de aciertos, que es la fraccin de todas las referencias que pueden ser satisfechas
fuera de la cach. En el pequeo ejemplo del prrafo previo, h = (k - 1)/ k,
algunos autores definen tambin la proporcin de fallas como 1- h.
Con estas definiciones podemos calcular el tiempo medio de acceso de la sigui ente manera:
tiempo medio de acceso
(1- h)m
236
Organizacin de computadoras/Un
enfoque estructurado
Cap. 4
Cuando h tiende al, todas las referencias pueden ser satisfechas en la memoria
cach y el tiempo de acceso se aproxima a c. Por otra parte, cuando h tiende a
0, se necesita una referencia a memoria cada vez y el tiempo de acceso se aproxima a e+m, primero un tiempo e para verificar (sin xito) la cach y luego un
tiempo m para efectuarla referencia a memoria. En algunos sistemas, la segunda referencia puede iniciarse en paralelo con la bsqueda en la cach, de modo
que si no encuentra la palabra en sta, el ciclode memoria ya ha comenzado.
Sin embargo, esta estrategia es ms complicada pues, requiere que la memoria
pueda detenerse sobre sus pistas, cuando la palabra fue localizada en la cach.
El algoritmo bsico de bsqueda en la cach y el iniciar (o detener) la referencia
a la memoria principal dependiendo del resultado de dicha bsqueda, son aspectos que maneja el microprograma.
Se utilizan dos formas diferentes de organizacin de la cach, junto con una
tercera que es un hbrido de las dos primeras. Para los tres tipos, se asume que
la memoria sea de 2m bytes, dividida (de manera conceptual) en bloques consecutivos de b bytes, lo que da un total de 2 b bloques. Cada bloque tiene una
direccin que es un mltiplo de b. El tamao b del bloque es por lo general una
potencia de dos.
..
.
.
El primer tipo es la memoria cach asociativa, cuyo ejemplo se muestra en la
figura 4-28. Consiste en cierto nmero de renglones o lneas, cada uno de los cuales contiene un bloque y sunmero correspondiente, junto con un bit de Validez que indica si el rengln est actualmente en uso o no. El ejemplo de la figura
4-28 ilustra una cach con 1024 renglones y una memoria con 224 bytes, dividido en 222 bloques de 4 bytes. En este tipo de cach el orden de los accesos es
aleatorio.
m
No. de
bloque
Direccin
Bit de
validez
Nmero de bloque
Valor
137
600
2131
1410
160248
290380
O
1
1024
lineas
O
12
16
224
L_J
T___ -,-I
__
_J.l...._____,J j
22 Bits __
32 Bits
--+-
lb)
la)
Fig. 4-28. Un ejemplo del esquema de la memoria cach. (a) Memoria con bloques de 4 bytes. (b) Memoria cach asociativa con 1024 lineas.
El nivel de microprogramacin
237
Al inicializar la computadora, todos los bitsde Validez toman el valor 0, para indicar que ninguna entrada a la cach es vlida. Suponga que la primera instruccin hace referencia a la palabra de32 bits que se encuentra en la direccin
O. El microprograma checa todos los renglones de la cach buscando uno que
sea vlido y contenga el bloque nmero O. Al no encontrarlo, enviar una solicitud al bus para extraer de la memoria la palabra O.Si esta palabra se necesita de
nuevo, la prxima vez ser tomada de la cach, eliminando la necesidad de una
operacin del bus.
Al correr el tiempo, ms y ms renglones de la cach se marcarn como vlidos. Si el programa completo y susdatos utilizan de 1024 palabras, todo el
programa y sus datos aparecern en la cach y correr a mayor velocidad, sin
hacer ninguna referencia a la memoria a travs del bus. Si se necesita ms de
1024 palabras, en algn momento la cach estar llena y un rengln previo deber descartarse para dar lugar a uno nuevo. En la prctica, la decisin de cul
eliminar debe hacerse muy rpido (en nanosegundos). La VAX y muchas otras
mquinas seleccionan un rengln en forma aleatoria. En el captulo 6 se abordan otros algoritmos posibles bajo el ttulo de memoria virtual, en donde
ocurre el mismo problema.
El aspecto que distingue a la memoria cach asociativa de los otros tipos,
consiste en que cada rengln contiene el nmero de bloque y su entrada. Cuando se presenta una direccin de memoria, el microprograma debe calcular el nmero del bloque relevante (fcil) y luego buscar ese nmero de bloque en la
cach (difcil). A fin de evitar una bsqueda lineal, la cach asociativa dispone
de un hardware especial que puede comparar cada entrada con el nmero de
bloque dado en forma simultnea, en lugar de hacerlo en un lazo de microprograma. Este tipo de hardware hace que dicha memoria sea cara.
Para reducir el costo, se invent la memoria cach de mapeo directo. Este tipo evita la bsqueda poniendo cada bloque en un rengln cuyo nmero se
puede calcular fcilmente a partir del nmero del bloque. Por ejemplo, el nmero de rengln puede ser el nmero de bloque mdulo el nmero de renglones. Con bloques de 4 bytes (una palabra) y 1024 renglones, el nmero de
rengln que corresponde a la direccin A es igual a (A/4) mdulo 1024. En el
ejemplo de la figura 4-29 se puede observar que las palabras en las direcciones
0,4096, 8192, etc., caen en el rengln O; las palabras en las direcciones 4,4100,
8196, etc., se mapean al rengln I y as sucesivamente.
Mientras que las memorias cach de mapeo directo eliminan el problema de
buscar, crean por otro lado un nuevo problema; cmo indicar cul de las muchas
palabras que corresponden al rengln lo est ocupando. En efecto, se han creado 1024 clases de equivalencia basada en los nmeros de bloque mdulo el ta.mao de la cach. En el ejemplo, el rengln Opuede contener cualquiera de las
palabras 0,4096,8192, etc., la forma de sealar cul est en un momento dado
en dicho rengln es poner parte de la direccin en el campo etiqueta de la cach.
238
Organizacin de computadoras/Un
enfoque estructurado
Cap. 4
Bit de
validez
Rengln
o
2
1
1
1
Etiqueta
Valor
2
1
3
Entrada O
12130
170
2142
0,4096,8192, 12288,
4,4100,8196,12292,
8,4104,8200, 12296,
12, 4108, 8204, 12300,
16,4112,8208,12304,
20,4116,8212,12308,
.
.
.
'"
...
'"
El nivel de microprogramacin
Entrada'
~~
239
Entrada n-'
Rengln
B Etiqueta Valor
O
2
3
4
~~
~
1023
."t'
::j::
5
4092,8188, 12284, ...
H::
:::
(a)
B: bit de validez
Bits
12
10
Etiqueta
Rengln
00
(b)
Fig. 4-29. (a) Una memoria cach de localizacin directa, con 1024 renglones de 4
bytes cada uno. (b) Clculo del rengln y etiqueta de una direccin de 24 bits.
Fig. 4-30. Una memoria cach asociativa agrupada con n entradas por rengln.
de las utilizadas resulta que estn en el mismo rengln. La meta, despus de todo es mejorar el rendimiento.
,La salida de esta dificultad consiste en expandir la cach de mapeo directo
con ms de un registro por rengln. La PDP-11/70, por ejemplo, tena dos registros por rengln. A la memoria cach con varios .registros por.rengln se le
denomina memoria cach asociativa agrupada y se Ilustra en la figura 4-30.
Tanto la cach asociativa como la de mapeo directo son de hecho, casos especiales de la asociativa agrupada. Si se reduce el nmero de renglones a .~, ~odos los registros de la cach estarn en el mismo rengln. y hab: q~~ distinguirlos slo por sus etiquetas ya que todos caen en la rrusma dlre~clon. ~ste
caso es slo una cach asociativa. Si n = 1 se regresa a una mernona cache de
mapeo directo con un registro por rengln.
..
Las memorias cach asociativas y de mapeo directo llenen diferentes puntos
fuertes y dbiles, la de mapeo directo es ms sencilla; fcil de con~truir y
tiene un tiempo de acceso ms rpido, ya que puede encontrar el rengln adecuado indexando en la cach con una porcin de la direccin como ndice. Por
otra parte, la cach asociativa tiene una mayor proporcin de aciertos para un
nmero dado de renglones, pues nunca se presentan conflictos. No se puede dar
el caso de que k palabras importantes no puedan ubicarse simultneamente en
la cach porque tuvieron la mala suerte de caer en el mismo rengln. ~uand~ ,se
disea cualquier computadora real, se realiza siempre una Intensa slmulaCI?n
de la cach para observar el desempeo que se est adquiriendo y a que precro.
Adems de determinar el nmero de renglones, los diseadores deben tambin seleccionar el tamao del bloque. En los ejemplos, se ha utilizado (por
simplicidad) una palabra de 32 bits, pero tambin es posible y se usan con frecuencia 2, 4, 8, o ms palabras. Una ventaja de usar un tamao grande de bloques es que hay menor gasto general para extra~r u~ bloque de ?cho palabras
que para ocho bloques de una palabra, en especial SI el bus perrnue transferen-
240
Organizacin
de computadoras/Un
enfoque estructurado
Cap, 4
4.6. EJEMPLOS
El nivel de microprogramacin
241
4.6.1. La microarquitectura
La microarquitectura de todas la CPU de lntel es similar porque evolucionaron de la primera, la 8086 (McKevitt y Bayliss, 1979). Virtualmente, la
8088 es la misma mquina que la 8086, excepto por un interfaz del bus de 8 bits
en lugar de 16. La trayectoria de datos, la ALU y los registros internos son idnticos. En forma parecida, el 80286 no vari tampoco en trminos de la trayectoria de datos principal, pues al igual que sus dos predecesores, es tambin internamente una mquina de 16 bits. Sin embargo, el 80286 consta de cuatro
unidades funcionales mltiples independientes, como se puede observar en la figura 3-40. El 80386 por su parte, tiene una trayectoria de datos de 32 bits y ocho
unidades funcionales, lo que en cierto modo lo hace diferente a los otros.
El anlisis se enfocar al 8088 como el miembro ms sencillo de la familia,
pues los otros son en esencia similares, aunque difieren en algunos detalles. El
8088 utiliza una mezcla de microcdigo y lgica aleatoria (circuitos especializados de hardware) para proporcionar un buen funcionamiento, mientras minimiza la extensin del microcdigo. Las microinstrucciones estn en formato
vertical, con campos multibit que especifican funciones generales, en lugar de
bits que controlen compuertas individuales en la trayectoria de datos.
El corazn del 8088 es la trayectoria de datos principal, que se ilustra en forma simplificada en la figura 4-31. La trayectoria de datos tiene dos secciones, la
parte inferior ubicada en dicha mitad de la figura y la parte superior en la mitad
ms alta. Ambas corren en forma independiente, en paralelo.
La parte inferior es comparable a la trayectoria de datos de la mayora de las
otras computadoras, incluyendo nuestros ejemplos. Contiene una ALU multifuncin, que toma dos entradas, calcula alguna funcin simple y produce una
salida. Las entradas provienen de tres registros de 16 bits, TMPA, TMPB y
TMPC, los cuales se cargan previamente al ciclo de la ALU. La salida pasa al
bus de donde se puede dirigir a cualquiera de los tres registros de entrada o a
cualquier otra parte dentro de la trayectoria. La ALU puede realizar operaciones tanto en 8 bits como en 16. Los cdigos de condicin resultantes de las
operaciones de la ALU se pueden almacenar en el registro PSW bajo el control
del microprograma .
.?
242
Organizacin
de computadoras/Un
enfoque estructurado
.~
a.
:>
'"
e
'0
'
u
'"
<J)
os
ss
Bus de la ALU
ES
pc
OPERANDO
INDIRECTO
Cola de
{Oo
O,
instrucciones
1----,0'""2-+---0"'"3'---1
'----.!..---'_-=----'
Memoria o ~"j-_C~-;_-:-:X_-j
registros internos
O
principales
Cruce
(5
.:
~'"
e
'0
'
'"
<J)
I Cdigos
de condicin
de la trayectoria
243
244
Organizacin
de computadoras/Un
enfoque
byte de la memoria. Sin embargo hacer la cola demasiado grande no estampoco bueno: El pre-extractor no sabe que significan los bytes que extrae, y lo continahaciendo"mientras
haya espacio 'en la. cola. En particular despus de un
salto, aun cuando ste sea incondicional, contina extrayendobytes que no sern utilizados. Si la cola es muy larga, el pre-extractor desperdiciar una parte
sustancial de la capacidad del bus, llamando bytesdespus de las instrucciones
desalto.El8086tena
una colade 6 bytes, pero sta se redujoa4 en el 8088.
Adems de ancho de banda del bus, staesJanicadiferencia
entre ambos procesadores.
",
Adems de la trayectoria de datos, el 8088 tiene una seccin de control que
almacena al microprograma y maneja ala trayectoria (vase la figura4-32).
Cuando se inicia una nueva instruccin en elnivel demquina convencional, su
byte de cdigo de operacin se saca de la cola deinstrucciones y secarga en el
IR (Registro de Instrucciones).
La unidad de hardware etiquetada como decodificador de grupo en la figura
3-42, extrae informacin de IR yla disemina por todala mouina. Los registros
M y N toman campos que-se utilizan en el clculo de las direcciones de fuente y
destino de los operandos. El registro X'contiene la informacin del cdigo de
operacin que se utiliza para indicar ala' ALUqu funciones realizar.
De la cola
Cap.4
estructurado
de
El nivel de microprogramacin
245
control
Operacin
Bits
Al
control de
la ALU
I FUENTEI DEST
~t
-.
ce
(a)
de la ALU
Operacin de memoria
Salto coito
Salla largo
Llamada a microprocedimiento
Contabilidad
(b)
Byte/pal,abra
I ALU IRE~
TIPO
sumamente
simplificado
ele microinstrucciones
de la ALU cle180SS'; 'lb) Tipos ele
micromstrucciones.
246
Organizacin
de computadoras/Un
enfoque estructurado
Cap. 4
'"
:J
nCi
del Motorola
b~
o:
o:
r-,
o
o
>
:J
o:
o:
LL
W
LL
i-
::l
::E
68000
Como un segundo ejemplo de microarquitectura de una mquina real se ver rpidamente el procesador Motorola 68000 (Stritter y Tredennick, 1978). El
68000 es una pastilla un poco ms grande que el 8088, con un espacio potencial
para 68000 transistores (de ah su nombre), aunque slo se usan aproximadamente 40000, con el resto del espacio ocupado por alambres y dems.
Antes, se ha mencionado el aspecto de si el 68000 es una mquina de 16 o de
32 bits. Esta cuestin se presenta de nuevo en la microarquitectura. En la figura
4-34 se muestra la trayectoria de datos principal.
Como se puede apreciar, la "trayectoria de datos" est formada de hecho
por tres trayectorias de datos separadas de 16 bits de ancho, cada una de las
o
VI
-"O
247
El nivel de microprogramacin
r-,
o
,
o
r-,
o:
w
e,
::l
U1
o:
o:
w
'o:
o,
e,
:l
::l
::l
U1
e,
U1
U1
i-
e,
U1
1'.
248
I
1;
j'
11
,',
Organizacin
de computadoras/Un
enfoque estructurado
Cap. 4
El nivel de microprogramacin
249
250
Organizacin
de computadoras/Un
enfoque estructurado
Cap. 4
MicroROM
-+ 17 -BitI s+
El nivel de microprogramacin
251
NanoROM
O
68-Bits
lO
1 1
Formato 1 IL._FC_____S_IG_U_IE_N_T_E
_M_lc_R_o_,N_sT_R_u_c_c_,o_N_lyl_T_IP_o-,-l_o
yl 1
10O
TRAMPA
CONTROL DE PRE-EXTRACCION
21 O
2
Formato 2
43 O
60 O
.:
544
palabras de 17 bits
realmente utilizadas
1024
8
SIGUIENTE MICROINSTRUCCION
1 1
.CONTROL.DE PR E-EXTRACCION
80 2
906
FC
1024
336
palabras de 68 bits
realmente utilizadas
Fig. 4-35. El 68000 tiene un almacn de control de dos niveles con una microROM
y una nanoROM,
qUina,.p.o: tener que esperar a que la microinstruccin estuviera disponible antes de irucrar a ext~aerIa ~anoinstruccin. Por ello, utilizaron un truco para hacer todo e~ un mismo ciclo. En la mayora de los casos, la nanoinstruccin
corresp?ndle~te a .Ia microinstruccin que est en la direccin n, se encuentra
en la misma direccin, de modo que ambos se pueden extraer al mismo tiempo.
.En los ~~sos en que dos o ms microinstrucciones comparten una misma nano~nstrucc~on, se ha quitado un transistor del circuito decodificador de nan.omstruCClon.es p~:a mapear dos o ms direcciones en la misma palabra. Por
eJ~mplo, la direccin 0000011111 se puede mapear en la direccin 0000010111
dejando fuera un transistor, de modo que las microinstrucciones
en las direcclon~~ 31 y 23 pueda,n. utilizar. ambas la nanoinstruccin 23. Por supuesto, la
elec~lon exacta deque instruccin va donde resulta decisiva, pero los diseadores tienen ~omputadoras que les ayudan a armar el rompecabezas .
. ~n la fIgura4-36 s~ m~estran .Ios dos formatos de microinstrucciones que
utiliza el 68000. Las miCrOInstrucciones no se ejecutan en forma secuencial como en el 8088. En vez de ello, cada una nombra a su sucesora. Se requiere de es-;
del 68000.
Cap. 4
252
Organizacin de computadoras/Un
El nivel de microprogramacin
253
enfoque estructurado
PROBLEMAS
moria interna, su paso por la ALU y registros de corrimiento, y posiblemente el
almacenamiento de los resultados en la memoria interna.
La seccin de control consta principalmente de la memoria de control, donde se guarda el microprograma. Cada microinstruccin de la memoria de
control controla las compuertas de la ruta de datos durante un microciclo. En el
ejemplo dado los microciclos se dividieron en subciclos controlados por un reloj. Durante el primer subciclo se extrajo la microinstruccin de la memoria de
control y se puso en un registro interno. En el segundo subciclo se guardaron las
entradas de la ALU en sendos registros para mantenerlas estables durante la
microinstruccin completa. En el tercer subciclo la ALU y el registro de corrimiento realizan su trabajo. Finalmente, en el cuarto subciclo se guarda el resultado de nuevo en la memoria interna por si se necesitaba en una microinstruccin posterior.
El secuenciamiento de las microinstrucciones puede calificarse de extravagante. Pocas mquinas tienen un contador de microprograma explcito en el
nivel de microprogramacin. En cambio, las microinstrucciones casi siempre
contienen la direccin de base de sus sucesoras. Normalmente se hace el O lgico
de la direccin base con unos pocos bits de estado para producir la direccin final. En muchas mquinas la direccin base de una microinstruccin se combina
con los bits de estado resultante de la anterior para producir una direccin de
salto que no tiene efecto sino hasta una microinstruccin despus.
Las microinstrucciones se pueden organizar en forma horizontal, con un bit
para cada seal de control; verticalmente, con unos cuantos campos que requieren de una decodificacin compleja; o a veces en forma combinada.
La organizacin horizontal conduce a mquinas en paralelo ms rpidas y
con palabras ms grandes. La organizacin vertical conduce a mquinas ms
lentas y memorias de control ms pequeas.
Se pueden utilizar varias tcnicas para mejorar el desempeo. Una de ellas
es la nanoprogramacin,
en donde el microprograma contiene apuntadores
(cortos) hacia nanoinstrucciones (largas) que de hecho controlan las compuertas. La nanoprogramacin reduce la cantidad de espacio dedicado a memorias
ROM en la pastilla, a costa de una ejecucin ms lenta.
Otras formas de mejorar el desempeo son: ciclos de tiempo variables, ramificacin mltiple, procesamiento en lnea y uso de memorias cach. Sin embargo, cada tcnica lleva aparejado cierto grado de mayor complejidad.
Por ltimo, se abordaron las microarquitecturas de dos de las pastillas disponibles comercialmente, el 8088 y el 68000. El 8088 tiene una trayectoria de
datos, tradicional, aumentada por una seccin superior para realizar clculos
en los registros de segmentos y utiliza microinstrucciones verticales de 21 bits.
El 68000 tiene tres trayectorias de datos independientes de 16 bits, dos para direcciones y una para datos. Utiliza un control a dos niveles con microinstrucciones de 17 bits y nanoinstrucciones de 68 bits.
de la microprogramacin.
del MAC-l.
.
J;
4 En la figura 4-!I(b) volvemos a cargar K en la linea etiquetada con E4. Las dos sen. tencias precedentes aseguran que K est en AC. Por qu volverlo a cargar?
5. Calcule el tiempo de ejecucin en microinstrucciones
salta completamente
mente su intento.
8. Considere una posible revisin del Mic-l en la q~e se eliminen los ~os2~a~~osL~~
.
' t COND y DIR y se obtengan mlcrotnstruCClones
e
.
secuenciarmen o
'.
.
d"
d 22 bits Tambin
microsaltos se realizan ahora con microinstruccIOnes
isnntas .~
'.
1,
I bits N y Z de la ALU para ponerlos a disposicin de un nucrosa
se memorizan os 1
'
d 1M' 1
el del que reto posterior. Compara el tamao del programa original e IC- con
quiere este nuevo diseo.
,p
254
9. Realizan exactamente la misma funcin las dos sentencias siguientes del Mie-l?
Explquelo.
.
a : = a + a; if n Ihen goto O;
a : = ishift(a); if n Ihen goto O;
del Mie-l?
11..
.I
.1
12. Suponga ~ue trabaja en una empresa que est vendiendo una mquina con el Mic1 como mvell y el Mac-I como nivel 2. El fabricante de semiconductores que normalmente le proporciona las pastillas acaba de anunciar una gran liquidacin de
ALU de ~ompleme~,to a l. Su departamento de compras aprovech la oportunidad
y com~ro una carmen completo de ellas. Seguir funcionando el microprograma
de la figura 4-16 con la ALU de complemento a 1 en lugar de la original de complemento a 2? Naturalmente, en la nueva mquina los nmeros negativos se han de
representar en complemento al,
13. Si. las. lectura~ y escrituras en la memoria principal del Mic-I necesitaran tres
mlcr~lOstrucCtOnes y no dos, quedar afectado el tamao del microprograma? Si
es aSI, en cunto?
14. El ca~lP.o CON~ de la palabra del Mie-l es
gos d.lstIntos. SI se necesitara uno de estos
exarmnar un nuevo bit de estado de la ALU
los cuatro cdigos existentes recomendara
del Mic-2 son mucho ms compactas que las del Mie-l (12
bits frente a 32). Puede imaginar un Mic-3 con una microinstruccin an menor?
Explquelo.
il
I
control. Suponga que tiene que modificarel Mie-l para aadir un bit a uno de los
campos COD o DIR a costa de quitar un bit a uno de los 11 campos restantes. Sugiera dnde encontrar ese bit sin afectar sustancialmente a la funcionalidad del
Mic-!.
255
enfoque estructurado
de 2 bits, lo que da lugar a cuatro cdicdigos para alguna otra cosa, como
indicador de desbordamiento
. cul de
sacrificar?
'G
15. Proponga un mecanismo para dotar al Mie-l de procedimientos al nivel de microp:o~ramacin. Debe encontrar alguna forma de llamada y regreso de microprocedimientos, que no podrn estar anidados (es decir, que un microprocedimiento
no
pueda llamar a otro). Puede modificar la arquitectura del Mie-l pero minimice
los cambios necesarios.
'
19. Al presidente de Nano-Micro-Mili Memorias Sociedad Annima le han impresionado tanto las ventas de sus nanomemorias que piensa aadir una pico memoria
a su lnea de productos. La nanomemoria hara referencia a la picomemoria del
mismo modo que la memoria de control hace referencia a la nanomemoria; es decir, la nanomemoria tendra picodirecciones. Usted es el vicepresidente encargado
de librar a la empresa de las ideas absurdas. Qu piensa de esta propuesta?
20. Si el microprograma de la figura 4-16 se tuviera que reescribir utilizando nanoprogramacin,
cuntos bits necesitarn la memoria de control y la nanomemoria? Compare este nmero con el tamao de la memoria de control del diseo
original.
21. Suponga que en el lugar de un procesador en lnea de 5 etapas que se trat en el texto, se tiene una lnea de n etapas, Cul sera, en este caso, la penalizacin por salto?
22. Considere una mquina en la que el 20OJo de las instrucciones son saltos condicionales y otro 10OJoson saltos iterativos. Los saltos condicionales se pueden predecir con una precisin del 60 OJoy los iterativos con una precisin del 90%. La penalizacin por suposiciones errneas es de cuatro ciclos. No hay penalizacin por los
saltos incondicionales ni para las suposiciones correctas. Cul sera la eficacia de
utilizar procesamiento en lnea (pipeline) en esta mquina?
23. En la figura 4-29(b), cul es la direccin de 1;, palabra cuyo contenido es 2131?
24. Un sistema con memoria cach tiene un 9570de proporcin de aciertos, un tiempo
de acceso de 100 nseg en los aciertos a la cach y un tiempo de acceso de800 nseg
cuando no se encuentra la instruccin en la cach. Cul es el tiempo de acceso
efectivo?
JZ
25. Se est diseando una cach para una computadora con 2 bytes de memoria. La
cach tendr 2K renglones y utilizar un bloque de 16 bytes. Calcule, tanto para 6'
256
Organizacin de computadoras/Un
enfoque estructurado
una cach asociativa como para una de localizacin directa, cuntos bytes ocupar la cach?
~
26. A primera vista, la presencia o ausencia de memoria cach no parece tener nada
que ver con la decisin de ubicar o no los registros de E/S en el espacio de direcciones de memoria. Piense un poco ms para ver si se puede encontrar algunos
problemas potenciales (si no encuentra ninguno, siga pensando),
27. El 68030 tiene instrucciones y cachs de datos integrados en la pastilla, Tambin
tiene un tipo especial de ciclo del bus (lee-modifica-escribe), para leer y modificar
una palabra de memoria en una sola e indivisible operacin, Existe alguna interaccin entre estas dos caractersticas? Si es as, explquela.
EL NIVEL DE MAQUINA
CONVENCIONAL
29. Escriba un programa en lenguaje ensamblador del Mac-! que verifique que el
microprograma funciona correctamente. Compruebe cada instruccin con una serie de operandos conocidos para ver si se producen los resultados esperados. Es habitual que los reparadores de computadoras utilicen programas de este tipo para
localizar fallas en el material.
1I
11,
'tI
'11
1I
"
,1
,1
'j
microprogramacin
5.1. EJEMPLOS
257