Sei sulla pagina 1di 16

Universidad

Rey Juan Carlos

ESTRUCTURA Y TECNOLOGÍA DE
COMPUTADORES

Camino de datos y control:


implementación microprogramada
Luis Rincón Córcoles
Licesio J. Rodríguez-Aragón

Camino de datos y control: implementación microprogramada

Programa
1. Introducción.
2. Realización de la función de transición de la unidad de control
mediante un secuenciador.
3. Microprogramación: definiciones.
4. Definición del formato de microinstrucción.
5. Realización de un microprograma para la unidad de control.
6. Traducción de un microprograma a circuitería.
7. Reducción del tamaño de la circuitería.
8. Conclusiones e implicaciones del diseño microprogramado.

2
Camino de datos y control: implementación microprogramada

1. Introducción
 En la primera parte del tema:
•Se han presentado varias instrucciones del repertorio del MIPS.
•Se han estudiado los elementos básicos que forman parte de un camino de datos en un
computador sencillo.
•Se han presentado algunos caminos de datos sencillos para ciertas operaciones.

 En la segunda parte del tema:


•Se ha construido un camino de datos uniciclo para todas las instrucciones presentadas.
•Se ha diseñado la circuitería de control para dicho camino de datos.
•Se ha analizado el funcionamiento de dicho camino de datos.
•Se han analizado las implicaciones de su utilización.

 En la tercera parte del tema:


•Se ha modificado el camino de datos anterior para que la ejecución de las instrucciones
dure varios ciclos de reloj.
•Se ha diseñado una nueva unidad de control como una máquina finita de estados.

 En esta parte del tema se estudiará una técnica que permitirá especificar y
diseñar de forma sencilla unidades de control arbitrariamente complejas para
caminos de datos multiciclo: la microprogramación.
3

Camino de datos y control: implementación microprogramada

Introducción
 El control del MIPS sencillo visto en las partes anteriores del tema es sencillo.
•El control para el repertorio de instrucciones completo del MIPS (unas 100) sería
bastante más elaborado y difícil.

 En una máquina con repertorio de instrucciones complejo existen muchos


factores que complican el control:
•Amplia variedad de modos de direccionamiento.
•Muchas instrucciones.
•Muchas variantes de las instrucciones en función de los modos de direccionamiento de
los operandos.
•Instrucciones con diferentes formatos y longitudes.

 Cuando el control es complicado, la técnica de diseño de la unidad de control


mediante un diagrama de estados es inaplicable.

 Por todo ello, en el proceso de diseño de la unidad de control de un computador


se hace necesario contar con técnicas o herramientas que simplifiquen la tarea.
•La circuitería se suele diseñar con la ayuda de herramientas CAD.
•Microprogramación: técnica que permite especificar y diseñar el control de forma
análoga a como se realiza un programa de computador. 4
Camino de datos y control: implementación microprogramada

Camino de datos multiciclo

Camino de datos y control: implementación microprogramada

Señales de control del camino de datos multiciclo


Señal de control Efecto cuando está inactiva Efecto cuando está activa

RegDest El identificador de registro destino está en rt El identificador de registro destino está en rd (bits 15-
RegDst (bits 20-16) 11)
EscrReg El registro destino se escribe con el valor
Ninguno
RegWrite correspondiente
SelALUA El primer operando de la UAL proviene del
El primer operando de la UAL proviene del registro A
ALUSrcA PC
LeerMem Se lee una posición de memoria y su contenido se
Ninguno
MemRead coloca a la salida de datos
EscrMem Se escribe una posición de memoria con el valor
Ninguno
MemWrite dado en la entrada de datos
MemaReg El valor en la entrada del banco de registros El valor de la entrada del banco de registros procede
MemtoReg procede de la UAL del registro MDR
IoD El PC suministra la dirección para acceder a ALUOut suministra la dirección para acceder a
IorD memoria memoria
EscrIR
Ninguno La salida de memoria se escribe en el registro IR
IRWrite
EscrPC Escribir el PC un valor que depende de la señal
Ninguno
PCWrite FuentePC (PCSource)
EscrPCCond Escribir el PC cuando la señal de resultado nulo de la
Ninguno
PCWriteCond UAL está también activa
6
Camino de datos y control: implementación microprogramada

Señales de control del camino de datos multiciclo


Señal de control Valor Efecto

00 La UAL realiza una operación de suma

ALUOp 01 La UAL realiza una operación de resta

10 La operación realizada por la UAL viene dada por el campo Funct de la instrucción

00 El segundo operando de la UAL proviene del registro B

01 El segundo operando de la UAL es la constante 4


SelALUB
(ALUSrcB) El segundo operando de la UAL son los 16 bits menos significativos del IR extendidos
10
en signo a 32 bits
El segundo operando de la UAL son los 16 bits menos significativos del IR extendidos
11
en signo a 32 bits y desplazados dos lugares hacia la izquierda
00 La salida de la UAL (PC+4) se envía para ser escrita en el PC
El contenido del registro ALUOut (destino de la ramificación condicional) se envía para
FuentePC 01
ser escrito en el PC
PCSource
La dirección de destino de salto en una instrucción J desplazada dos bits hacia la
10 izquierda y concatenada con los 4 bits más significativos del PC se envía para ser
escrita en el PC

Camino de datos y control: implementación microprogramada

Diagrama de estados multiciclo completo


Instruction decode/
Instruction fetch register fetch
0
MemRead 1
ALUSrcA = 0
IorD = 0 ALUSrcA = 0
Start IRWrite ALUSrcB = 11
ALUSrcB = 01 ALUOp = 00
ALUOp = 00
PCWrite
PCSource = 00
')

(Op = 'JMP')

pe)
EQ

-Ty
=R
'B

') (Op
=

Memory address 'SW


p

=
(O

(Op Branch Jump


computation ') or Execution completion completion
= 'LW
(Op 6 8 9
ALUSrcA = 1
ALUSrcA = 1 ALUSrcA =1 ALUSrcB = 00
ALUSrcB = 10 PCWrite
ALUSrcB = 00 ALUOp = 01
ALUOp = 00 PCSource = 10
ALUOp= 10 PCWriteCond
PCSource = 01
(O
(Op = 'LW')

p
=
'S
W
')

Memory Memory
access access R-type completion
3 5 7

RegDst = 1
MemRead MemWrite RegWrite
IorD = 1 IorD = 1 MemtoReg = 0

Write-back step
4

RegDst = 0
RegWrite
MemtoReg =1

8
Camino de datos y control: implementación microprogramada

2. Función de transición con un secuenciador


 En la realización multiciclo mediante dos ROM, la mayor parte de la lógica se
emplea para materializar la función de transición.

 Si crece el repertorio de instrucciones, también crece el número de estados, y


con él la lógica de control, especialmente la dedicada a la función de transición.

 Si hay instrucciones que duran muchos ciclos de reloj, en su ejecución se


producen largas secuencias de estados con un solo camino que los une.
•Se producen muchísimas combinaciones estado+IR imposibles.
•Sin embargo, gran parte de la lógica se dedica a la función de transición.

 Por todo ello, la función de transición se puede codificar más eficientemente


utilizando un contador que se incremente automáticamente en cada ciclo de
reloj.
•Así se evita codificar explícitamente la función de transición en la unidad de control,
ahorrando gran cantidad de lógica.
•Es preciso resolver situaciones en las que el estado siguiente no sea el estado
anterior incrementado (“saltos”).

Camino de datos y control: implementación microprogramada

Función de transición con un secuenciador


Control unit PCWrite

 El contador se puede construir PCWriteCond


IorD
mediante un registro más un PLA or ROM
MemRead
MemWrite
incrementador (sumador que suma IRWrite
BWrite
1 al estado anterior). Outputs MemtoReg
PCSource
ALUOp
 Para tener en cuenta los “saltos” ALUSrcB
ALUSrcA
se añadirá: RegWrite
•Una lógica (tabla) para calcular el RegDst
estado (dirección) siguiente si hay Input AddrCtl

un “salto”. 1

•Una señal de control que permita State


seleccionar entre la dirección
Adder
(estado) incrementada y la
dirección de “salto” (CtrlDir o Address select logic

AddCtl).
Op[5-0]

Instruction register
opcode field
10
Camino de datos y control: implementación microprogramada

Función de transición con un secuenciador


 Envío (dispatch): salto en función del código de operación.

 Puede utilizarse una tabla (ROM o PLA) para cada estado en el que sea
preciso realizar un envío (bits de dirección: código de operación, quizá
PLA or ROM
compactado).
1

State
Valor de Adder
Acción
AddCtl Mux AddrCtl
3 2 1 0
010 (002) Pasar al estado 0
110 (012) Envío con ROM 1 0
210 (102) Envío con ROM 2
Dispatch ROM 2 Dispatch ROM 1
310 (112) Usar estado incrementado
Address select logic

Instruction register
opcode field

 Podría usarse una única tabla para todos los envíos (bits de dirección:
estado+código de operación, quizá compactados). 11

Camino de datos y control: implementación microprogramada

Función de transición con un secuenciador


Tabla de envío 1 Valor de AddCtl en cada estado

Op[5-0] Instrucción Valor Acción del control de Valor de


Estado
dirección AddCtl
000000 Instrucción R 0110
0 Usar estado incrementado 310 (112)
000010 Instrucción J 1001
1 Envío con ROM 1 110 (012)
000100 Instrucción BEQ 1000
2 Envío con ROM 2 210 (102)
100011 Instrucción LW 0010
3 Usar estado incrementado 310 (112)
101011 Instrucción SW 0010
4 Pasar al estado 0 010 (002)
5 Pasar al estado 0 010 (002)
6 Usar estado incrementado 310 (112)
Tabla de envío 2
7 Pasar al estado 0 010 (002)

Op[5-0] Instrucción Valor 8 Pasar al estado 0 010 (002)


9 Pasar al estado 0 010 (002)
100011 Instrucción LW 0011
101011 Instrucción SW 0101

12
Camino de datos y control: implementación microprogramada

Función de transición con un secuenciador: tabla


Bits de control 17-0

PCWriteCond

PCSource
PCSource
Estado

ALUSrcB

ALUSrcB
MemtoReg
MemWrite
MemRead

ALUOp

ALUOp
actual

AddCtr

AddCtl
RegWrite
ALUSrcA
PCWrite

IRWrite

RegDst

IorD
1 0 1 0 1 0 1 0
0000 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 1
0001 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1
0010 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0
0011 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1
0100 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0
0101 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0110 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1
0111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
1000 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0
1001 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
Resto
(estados
1010 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
hasta
1111)

 Control con ROM o PLA: tabla de salidas (bits 17-2) y transiciones (AddCtl: bits 1-0), junto
con las tablas de envío 1 y 2, el contador y el multiplexor de selección. 13

Camino de datos y control: implementación microprogramada

3. Microprogramación: definiciones
 Microinstrucción: conjunto de valores de las señales de control en una etapa
cualquiera de la ejecución de una instrucción.
•Ejecución de una microinstrucción: activación de las señales de control especificadas
en la misma en un instante determinado.

 La ejecución de una instrucción implica la asignación de una serie de valores a


las señales de control de forma ordenada en una secuencia de fases o etapas.
•La ejecución de una instrucción implica la ejecución ordenada de una secuencia de
microinstrucciones.

 Es preciso establecer un mecanismo de secuenciamiento que permita decidir


cuál es la microinstrucción siguiente a una dada.
•Las secuencias de microinstrucciones suelen estar ubicadas en forma contigua, unas
detrás de otras.
•En ocasiones se producen “saltos” en la secuencia, y la microinstrucción que hay que
ejecutar a continuación no es la que está detrás, sino otra distinta.

 Microprograma o microcódigo: conjunto de microinstrucciones utilizadas para


especificar el control de una máquina.
14
Camino de datos y control: implementación microprogramada

Microprogramación: definiciones
 Microprogramación: técnica de diseño del control como un microprograma
encargado de realizar las instrucciones de la máquina en términos de
microinstrucciones más simples.

 Idea clave: representar los valores activados en las líneas de control en


forma simbólica.
•Así el microprograma es la representación de las microinstrucciones del mismo modo
que el lenguaje ensamblador es una representación de las instrucciones de máquina.

 La sintaxis de la microprogramación tiene una cierta analogía a la sintaxis de la


programación en ensamblador:
•La instrucciones de ensamblador se dividen en campos (etiqueta, código de operación,
operandos, comentarios).
•La sintaxis de las microinstrucciones consta de varios campos o agrupaciones de
señales.
•Los campos se definen de acuerdo a la función de las señales en el camino de datos.

 La realización final de un microprograma coincide aproximadamente con la


presentada al tratar la realización de la función de transición con un secuenciador.
15

Camino de datos y control: implementación microprogramada

4. Definición del formato de microinstrucción


 En una microinstrucción se debe poder especificar la activación de todas las
señales generadas por la unidad de control.

 Las señales de control se pueden dividir en grupos (campos) dependiendo de la


función que tengan dentro del camino de datos.
•El formato de microinstrucción debe simplificar la representación y hacer sencillo diseñar
y comprender el microprograma.

Campo Función

Control ALU Especifica la operación ejecutada en la UAL. El resultado siempre se guardará en ALUOut.

Fuente1 Especifica de dónde viene el primer operando de la UAL.

Fuente2 Especifica de dónde viene el segundo operando de la UAL.

ControlRegistros Especifica la lectura y escritura del banco de registros, y de dónde viene el valor escrito.
Especifica la lectura y escritura de la memoria, y de dónde viene el valor escrito y adónde va el
Memoria
valor leído.
ControlEscrPC
Especifica la escritura en el PC.
(PCWriteControl)
Secuenciación Especifica cómo se elige la siguiente microinstrucción.

16
Camino de datos y control: implementación microprogramada

Formato de microinstrucción: campos


Valor Señales
Campo Comentario
simbólico activas
Se usa para definir etiquetas que clarifican la secuenciación del
Cualquier microcódigo. No generan señales de control, pero se usan entre otras
Etiqueta
cadena cosas para especificar los contenidos de las tablas de envío (dispatch),
cuya selección se resuelve mediante la señal CtrlDir (AddCtl).
Add ALUOp = 00 La UAL suma.

ControlALU Subt ALUOp = 01 La UAL resta y realiza la comparación para ramificaciones.


La UAL realiza la operación indicada por el contenido del campo Func
FuncCode ALUOp = 10
de la instrucción.
PC ALUSrcA = 0 El primer operando de la UAL es el contenido del PC.
Fuente1
A ALUSrcA = 1 El primer operando de la UAL es el contenido del registro A.

B ALUSrcB = 00 El segundo operando de la UAL es el contenido del registro A.

4 ALUSrcB = 01 El segundo operando de la UAL es la constante 4.


El segundo operando de la UAL procede de la salida de la unidad de
Fuente2 Extend ALUSrcB = 10
extensión de signo de 16 bits a 32.
El segundo operando de la UAL procede de la salida de la unidad de
Extshft ALUSrcB = 11 desplazamiento de dos posiciones hacia la izquierda ubicado tras la
unidad de extensión de signo de 16 bits a 32.
17

Camino de datos y control: implementación microprogramada

Formato de microinstrucción: campos


Valor Señales
Campo Comentario
simbólico activas
Se leen dos registros usando los campos rs y rt de la instrucción,
Read
y los resultados se guardan en los registros A y B.
RegWrite
Se escribe un registro usando el campo rd de la instrucción con el
WriteALU RegDst = 1
ControlRegistros contenido del registro ALUOut.
MemtoReg = 0
RegWrite
Se escribe un registro usando el campo rt de la instrucción con el
WriteMDR RegDst = 0
contenido del registro MDR.
MemtoReg = 1
MemRead
Lee de memoria usando la dirección dada por el contenido del
ReadPC IorD = 0
PC, y escribiendo la información leída en el IR (y en el MDR).
IRWrite
Memoria MemRead Lee de memoria usando la dirección dada por el contenido de
ReadALU
IorD = 1 ALUOut, y escribiendo la información leída en el MDR).
MemWrite Escribe en memoria usando la dirección dada por el contenido de
WriteALU
IorD = 1 ALUOut y el contenido del registro B como dato.

18
Camino de datos y control: implementación microprogramada

Formato de microinstrucción: campos


Valor Señales
Campo Comentario
simbólico activas
PCSource = 00
ALU Escribe la salida de la UAL en el PC.
PCWrite
PCSource = 01 Si la salida Zero de la UAL está activa, escribe en el PC el
ControlEscrPC ALUOut-Cond
PCWriteCond contenido del registro ALUOut.
PCSource = 10
JumpAddress Escribe en el PC la dirección de salto de la instrucción.
PCWrite
Seq AddCtl = 11 Selecciona la siguiente microinstrucción.
Selecciona la microinstrucción 0 para comenzar la fase de lectura
Fetch AddCtl = 00
de una nueva instrucción.
Secuenciación Selecciona la siguiente microinstrucción mediante la tabla de
Dispatch1 AddCtl = 01
envío 1.
Selecciona la siguiente microinstrucción mediante la tabla de
Dispatch2 AddCtl = 10
envío 2.

19

Camino de datos y control: implementación microprogramada

Formato de microinstrucción: tablas de envío


Tabla de envío 1

Op[5-0] Instrucción Valor simbólico

000000 Instrucción R Rformat1


000010 Instrucción J JUMP1
000100 Instrucción BEQ BEQ1
100011 Instrucción LW Mem1
101011 Instrucción SW Mem1

Tabla de envío 2

Op[5-0] Instrucción Valor simbólico

100011 Instrucción LW LW2


101011 Instrucción SW SW2

20
Camino de datos y control: implementación microprogramada

5. Creación del microprograma:


lectura y decodificación Instruction decode/
Instruction fetch
 Acciones:
Register fetch
0
MemRead 1
Microinstrucción 0 (instruction fetch): ALUSrcA = 0
IorD = 0
ALUSrcA = 0
•Leer de memoria la instrucción y Start
IRWrite
ALUSrcB = 01 ALUSrcB = 11
cargarla en IR. ALUOp = 00
PCWrite
ALUOp = 00
PCSource = 00
•Incrementar el PC sumándole 4.
Microinstrucción 1: W') yp e)

')

(Op = 'JMP')
R-T

EQ
= 'S =
•Decodificar la instrucción. Op (Op
or (

'B
')

=
= 'LW

p
•Leer dos registros del banco y (Op

(O
guardarlos en A y B.
•Calcular la hipotética dirección de Memory reference FSM R-type FSM Branch FSM Jump FSM
ramificación y guardarla en ALUOut. (Figure 5.38) (Figure 5.39) (Figure 5.40) (Figure 5.41)

•Saltar según tabla de envío 1.

Control Control
Etiqueta ControlALU Fuente1 Fuente2 Memoria Secuenciación
Registros EscrPC
Fetch Add PC 4 ReadPC ALU Seq
Add PC Extshft Read Dispatch1

21

Camino de datos y control: implementación microprogramada

Creación del microprograma: ejecución de


instrucciones de acceso a memoria
 Acciones: From state 1
(Op = 'LW') or (Op = 'SW')
Microinstrucción 2: Memory address computation
2
•Calcular la dirección del dato en memoria y guardarla en ALUOut. ALUSrcA = 1
ALUSrcB = 10
•Saltar según tabla de envío 2. ALUOp = 00

Si Op=LW
(O
(Op = 'LW')

p
=

Microinstrucción 3:
'S
W
')

Memory Memory

•Leer dato de memoria y guardarlo en MDR. 3


access
5
access

Microinstrucción 4: MemRead
IorD = 1
MemWrite
IorD = 1
•Escribir el contenido de MDR en el banco de registros.
•Saltar a microinstrucción 0 (fetch).
Write-back step
Si Op=SW 4

Microinstrucción 5: RegWrite
MemtoReg = 1
To state 0
(Figure 5.37)

•Grabar en memoria el contenido de B en la dirección ALUOut. RegDst = 0

•Saltar a microinstrucción 0 (fetch).


Control Control
Etiqueta ControlALU Fuente1 Fuente2 Memoria Secuenciación
Registros EscrPC
Mem1 Add A Extend Dispatch2
LW2 ReadALU Seq
WriteMDR Fetch
SW2 WriteALU Fetch
22
Camino de datos y control: implementación microprogramada

Creación del microprograma: ejecución de


instrucciones de tipo R From state 1
(Op = R-type)

Execution
 Acciones: 6
Microinstrucción 6:
ALUSrcA = 1
•Sumar los contenidos de los registros A y B y guardar el resultado ALUSrcB = 00
en ALUOut. ALUOp = 10
Microinstrucción 7:
•Escribir el contenido de ALUOut en el banco de registros.
•Saltar a microinstrucción 0 (fetch). R-type completion
7
RegDst = 1
RegWrite
MemtoReg = 0

To state 0
(Figure 5.37)

Control Control
Etiqueta ControlALU Fuente1 Fuente2 Memoria Secuenciación
Registros EscrPC
Rformat1 FuncCode A B Seq
WriteALU Fetch

23

Camino de datos y control: implementación microprogramada

Creación del microprograma: ejecución de


la instrucción BEQ
From state 1
 Acciones: (Op = 'BEQ')
Microinstrucción 8: Branch completion
•Restar los contenidos de A y B. 8
•En función de la condición de resultado nulo, escribir en el PC el ALUSrcA = 1
ALUSrcB = 00
contenido de ALUOut. ALUOp = 01
•Saltar a microinstrucción 0 (fetch). PCWriteCond
PCSource = 01

To state 0
(Figure 5.37)

Control Control
Etiqueta ControlALU Fuente1 Fuente2 Memoria Secuenciación
Registros EscrPC
BEQ1 Subt A B ALUOut-Cond Fetch

24
Camino de datos y control: implementación microprogramada

Creación del microprograma: ejecución de


la instrucción J
From state 1
 Acciones: (Op = 'J')

Microinstrucción 9: Jump completion


•Escribir en el PC la dirección de salto procedente del desplazador. 9

•Saltar a microinstrucción 0 (fetch).


PCWrite
PCSource = 10

To state 0
(Figure 5.37)

Control Control
Etiqueta ControlALU Fuente1 Fuente2 Memoria Secuenciación
Registros EscrPC
JUMP1 Jump address Fetch

25

Camino de datos y control: implementación microprogramada

Microcódigo completo
Control Control
Etiqueta ControlALU Fuente1 Fuente2 Memoria Secuenciación
Registros EscrPC
Fetch Add PC 4 ReadPC ALU Seq
Add PC Extshft Read Dispatch1
Mem1 Add A Extend Dispatch2
LW2 ReadALU Seq
WriteMDR Fetch
SW2 WriteALU Fetch
Rformat1 FuncCode A B Seq
WriteALU Fetch
BEQ1 Subt A B ALUOut-Cond Seq
JUMP1 Jump address Fetch

Op[5-0] Instrucción Valor simbólico Tabla de envío 2


Tabla de 000000 Instrucción R Rformat1
000010 Instrucción J JUMP1 Op[5-0] Instrucción Valor simbólico
envío 1
000100 Instrucción BEQ BEQ1 100011 Instrucción LW LW2
100011 Instrucción LW Mem1 101011 Instrucción SW SW2
101011 Instrucción SW Mem1
26
Camino de datos y control: implementación microprogramada

6. Traducción del microprograma a circuitería


 El microcódigo puede residir en
una ROM (llamada memoria de Microcode
control) o en una PLA. storage

Datapath
Outputs control
 La lógica de selección de outputs

dirección es la misma que en el


enfoque del secuenciador.
Input

 Las tablas de envío pueden 1

residir en sendas ROM o PLA. Microprogram counter


Sequencing
control
Adder
 Las PLA son más pequeñas,
Address select logic
excepto cuando la función de
control es muy densa.

 Las ROM son más flexibles. Inputs from instruction


register opcode field

 El registro de estado se llama ahora contador de microprograma.


 Las señales de control forman la palabra de control, que a veces se almacena en un
registro denominado registro de control. 27

Camino de datos y control: implementación microprogramada

7. Reducción del tamaño de la circuitería


 Las máquinas con un control complejo pueden requerir gran cantidad de circuitería.
•Hay máquinas con cientos o miles de microinstrucciones.
•Hay máquinas con microinstrucciones de cien o más bits.

 Reducción del número de bits en la microinstrucción (codificación vertical):


•Codificación de campos:
ƒSi un campo tiene k señales de control y en un ciclo de reloj dado sólo puede activarse una
de ellas, pueden codificarse con m bits siendo m el menor entero que cumple que 2m ≥ k.
ƒCada microinstrucción tendrá m-k bits menos.
ƒA cambio, es preciso añadir un decodificador de m a 2m.
ƒDos señales de control en el mismo campo codificado no pueden activarse
simultáneamente: si fuese preciso hacerlo, se usarán dos microinstrucciones consecutivas,
activándose cada señal en una de ellas.
•Definición de varios formatos de microinstrucción:
ƒLos campos pueden solaparse unos con otros.
ƒEl significado de cada bit de la microinstrucción vendrá dado por un bit adicional que
servirá para distinguir unos formatos de otros.
ƒSerá preciso añadir el bit de formato y un demultiplexor.
ƒEl número de microinstrucciones puede aumentar, si bien serán más estrechas.
•En ambos casos puede ser preciso aumentar el ciclo de reloj.

 Codificación horizontal: codificación ancha con todos los bits de la microinstrucción.


28
Camino de datos y control: implementación microprogramada

8. Conclusiones e implicaciones del diseño


 El primer diseño de unidad de control microprogramada se debe a Maurice V.
Wilkes. Línea de condición

1 0
nd
MUX

nd nd
Señales de control Siguiente dirección
Registro Reg. Reloj
Instrucción S1 S2 S3 Sn

nd
000...0
Decodificador 000...0
000...11
de Dx.c
Dx.c'
direcciones

Biestable de condición (c)

Matriz de diodos A Matriz de diodos B


29

Camino de datos y control: implementación microprogramada

Conclusiones e implicaciones del diseño


 La microprogramación fue inventada por Maurice V. Wilkes en 1953.

 En aquellos tiempos la tecnología no estaba suficientemente adelantada como para


contar con una memoria de control suficientemente rápida.

 IBM rescató la microprogramación en 1964 con su familia de computadores 360.


•IBM incorporó el desarrollo de tecnología para memorias en la compañía para hacer viable la
microprogramación.

 Las primeras máquinas microprogramadas implementaban el control mediante una


memoria ROM: de ahí la terminología utilizada.
•Microinstrucción: conjunto de valores binarios de las señales de control.
ƒSu función, estructura y misión es análoga a la de las instrucciones en código máquina (representación
binaria de las operaciones que puede realizar un computador).
•Microprograma: secuencia de microinstrucciones necesarias para ejecutar las instrucciones.
ƒSu función es análoga a la de los programas en código máquina (secuencia de instrucciones necesarias
para ejecutar los algoritmos).
•Micromemoria: memoria de control en ROM que contiene las microinstrucciones.
ƒSu función es análoga a la de la memoria central en RAM.
•Contador de microprograma: contiene la microdirección (dirección en la micromemoria) de la
siguiente microinstrucción del microprograma y recorre el mismo en su ejecución.
ƒSu función y nombre son análogos a los del contador de programa (contiene la dirección en memoria RAM
de la siguiente instrucción del programa y recorre el mismo en su ejecución).
30
Camino de datos y control: implementación microprogramada

Conclusiones e implicaciones del diseño


 La microprogramación permite modificar y depurar fácilmente el control.
•El uso de micromemorias RAM facilitó la depuración incluso con la máquina ya en el mercado.

 La microprogramación abarata el coste de ampliar el repertorio de instrucciones para


incluir instrucciones nuevas, complejas o cuya ejecución implique muchos ciclos de reloj.
•Basta con incluir una memoria de control suficientemente grande.
•Si la memoria de control tenía parte RAM el usuario incluso podía definir nuevas instrucciones.

 La microprogramación puso de moda la emulación: simulación completa del repertorio de


instrucciones de una máquina gracias a un control microprogramado.

 La microprogramación estuvo muy de moda en los años 60 y 70.


•Las UCP se diseñaban mediante componentes discretos MSI.
•Alternativas: control cableado frente a control microprogramado (firmware: microcódigo en ROM).

 Hoy en día el diseño de UCP con unidad de control microprogramada está en desuso.
•El tiempo de acceso a la memoria de control a la RAM de instrucciones es similar: la solución
microprogramada es muy lenta.
•La UCP se realiza en un solo chip (microprocesador), no mediante componentes discretos.
•Están en boga los diseños RISC, que implican un control más sencillo.
•En cualquier caso, para realizar el control se recurre a herramientas CAD.
31

Camino de datos y control: implementación microprogramada

Conclusiones e implicaciones del diseño


 La microprogramación como técnica para especificar el control simplifica el proceso de
diseño, ya que:
•Permite especificar el control de forma simbólica.
•Permite comprender más fácilmente el funcionamiento de la máquina.
•Facilita la identificación de los patrones de activación de las señales de control, así como su
secuenciamiento.

 Una vez especificado el microcódigo, puede recurrirse a un diseño microprogramado o


bien puede diseñarse un control con un secuenciador para especificar la función de
transición.
•Ambas opciones son equivalentes.

 El microcódigo puede residir en una memoria de control (ROM o incluso RAM), en una
PLA o en una red de puertas.
•Si el microcódigo reside en una memoria de control ROM o RAM, se habla de firmware.
•La PLA será más compacta, barata y rápida si la matriz de control tiene pocos bits a 1.
•Si la función de control es densa, la PLA será grande (y lenta).
•La opción de utilizar una ROM siempre es más flexible.
•Una ROM es más lenta y cara que una PLA.
•El control mediante una red de puertas (cableado) se realiza con la ayuda de herramientas CAD.

 La microprogramación se usa actualmente en periféricos (módems, impresoras, etc).


32

Potrebbero piacerti anche