implementacion microprogramadas.

Anuncio
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
5
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
RegDst
El identificador de registro destino está en rt
(bits 20-16)
El identificador de registro destino está en rd (bits 1511)
EscrReg
RegWrite
Ninguno
El registro destino se escribe con el valor
correspondiente
SelALUA
ALUSrcA
El primer operando de la UAL proviene del
PC
El primer operando de la UAL proviene del registro A
LeerMem
MemRead
Ninguno
Se lee una posición de memoria y su contenido se
coloca a la salida de datos
EscrMem
MemWrite
Ninguno
Se escribe una posición de memoria con el valor
dado en la entrada de datos
MemaReg
MemtoReg
El valor en la entrada del banco de registros
procede de la UAL
El valor de la entrada del banco de registros procede
del registro MDR
IoD
IorD
El PC suministra la dirección para acceder a
memoria
ALUOut suministra la dirección para acceder a
memoria
EscrIR
IRWrite
Ninguno
La salida de memoria se escribe en el registro IR
EscrPC
PCWrite
Ninguno
Escribir el PC un valor que depende de la señal
FuentePC (PCSource)
EscrPCCond
PCWriteCond
Ninguno
Escribir el PC cuando la señal de resultado nulo de la
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
ALUOp
SelALUB
(ALUSrcB)
FuentePC
PCSource
Efecto
00
La UAL realiza una operación de suma
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
10
El segundo operando de la UAL son los 16 bits menos significativos del IR extendidos
en signo a 32 bits
11
El segundo operando de la UAL son los 16 bits menos significativos del IR extendidos
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
01
El contenido del registro ALUOut (destino de la ramificación condicional) se envía para
ser escrito en el PC
10
La dirección de destino de salto en una instrucción J desplazada dos bits hacia la
izquierda y concatenada con los 4 bits más significativos del PC se envía para ser
escrita en el PC
7
Camino de datos y control: implementación microprogramada
Diagrama de estados multiciclo completo
Instruction decode/
register fetch
Instruction fetch
=
(Op
') or
'LW
(Op
=
Execution
6
')
pe)
-Ty
'B
EQ
=R
=
(Op
')
'SW
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
Branch
completion
8
ALUSrcA =1
ALUSrcB = 00
ALUOp= 10
Jump
completion
9
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
PCWrite
PCSource = 10
(O
p
=
W
'S
')
(Op = 'LW')
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
(Op = 'JMP')
Memory address
computation
1
p
Start
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
(O
0
Memory
access
3
Memory
access
5
MemRead
IorD = 1
R-type completion
7
MemWrite
IorD = 1
RegDst = 1
RegWrite
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”).
9
Camino de datos y control: implementación microprogramada
Función de transición con un secuenciador
Control unit
 El contador se puede construir
mediante un registro más un
incrementador (sumador que suma
1 al estado anterior).
PLA or ROM
Outputs
 Para tener en cuenta los “saltos”
se añadirá:
Input
1
State
Adder
Address select logic
Op[5-0]
•Una lógica (tabla) para calcular el
estado (dirección) siguiente si hay
un “salto”.
•Una señal de control que permita
seleccionar entre la dirección
(estado) incrementada y la
dirección de “salto” (CtrlDir o
AddCtl).
PCWrite
PCWriteCond
IorD
MemRead
MemWrite
IRWrite
BWrite
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
AddrCtl
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
AddCtl
Adder
Acción
010 (002)
Pasar al estado 0
110 (012)
Envío con ROM 1
210 (102)
Envío con ROM 2
310 (112)
Usar estado incrementado
3
Mux
2 1
AddrCtl
0
0
Dispatch ROM 2
Dispatch ROM 1
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
Valor de AddCtl en cada estado
Tabla de envío 1
Op[5-0]
Instrucción
Valor
000000
Instrucción R
0110
000010
Instrucción J
1001
000100
Instrucción BEQ
1000
100011
Instrucción LW
0010
101011
Instrucción SW
0010
Tabla de envío 2
Op[5-0]
Instrucción
Valor
100011
Instrucción LW
0011
101011
Instrucción SW
0101
Estado
Acción del control de
dirección
Valor de
AddCtl
0
Usar estado incrementado
310 (112)
1
Envío con ROM 1
110 (012)
2
Envío con ROM 2
210 (102)
3
Usar estado incrementado
310 (112)
4
Pasar al estado 0
010 (002)
5
Pasar al estado 0
010 (002)
6
Usar estado incrementado
310 (112)
7
Pasar al estado 0
010 (002)
8
Pasar al estado 0
010 (002)
9
Pasar al estado 0
010 (002)
12
Camino de datos y control: implementación microprogramada
Función de transición con un secuenciador: tabla
Bits de control 17-0
ALUSrcA
RegWrite
RegDst
0
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
AddCtl
MemtoReg
1
1
AddCtr
IRWrite
0
0
ALUSrcB
MemWrite
1
1
ALUSrcB
MemRead
0
0
ALUOp
IorD
1
0
ALUOp
PCWriteCond
0
1
PCSource
PCWrite
1
0000
PCSource
⇓
Estado
actual
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
Control ALU
Función
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
Memoria
ControlEscrPC
(PCWriteControl)
Secuenciación
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
valor leído.
Especifica la escritura en el PC.
Especifica cómo se elige la siguiente microinstrucción.
16
Camino de datos y control: implementación microprogramada
Formato de microinstrucción: campos
Campo
Valor
simbólico
Etiqueta
Cualquier
cadena
ControlALU
Señales
activas
Comentario
Se usa para definir etiquetas que clarifican la secuenciación del
microcódigo. No generan señales de control, pero se usan entre otras
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.
Subt
ALUOp = 01
La UAL resta y realiza la comparación para ramificaciones.
FuncCode
ALUOp = 10
La UAL realiza la operación indicada por el contenido del campo Func
de la instrucción.
PC
ALUSrcA = 0
El primer operando de la UAL es el contenido del PC.
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.
Extend
ALUSrcB = 10
El segundo operando de la UAL procede de la salida de la unidad de
extensión de signo de 16 bits a 32.
Extshft
ALUSrcB = 11
El segundo operando de la UAL procede de la salida de la unidad de
desplazamiento de dos posiciones hacia la izquierda ubicado tras la
unidad de extensión de signo de 16 bits a 32.
Fuente1
Fuente2
17
Camino de datos y control: implementación microprogramada
Formato de microinstrucción: campos
Campo
Valor
simbólico
Señales
activas
Se leen dos registros usando los campos rs y rt de la instrucción,
y los resultados se guardan en los registros A y B.
Read
ControlRegistros
Memoria
Comentario
WriteALU
RegWrite
RegDst = 1
MemtoReg = 0
Se escribe un registro usando el campo rd de la instrucción con el
contenido del registro ALUOut.
WriteMDR
RegWrite
RegDst = 0
MemtoReg = 1
Se escribe un registro usando el campo rt de la instrucción con el
contenido del registro MDR.
ReadPC
MemRead
IorD = 0
IRWrite
Lee de memoria usando la dirección dada por el contenido del
PC, y escribiendo la información leída en el IR (y en el MDR).
ReadALU
MemRead
IorD = 1
Lee de memoria usando la dirección dada por el contenido de
ALUOut, y escribiendo la información leída en el MDR).
WriteALU
MemWrite
IorD = 1
Escribe en memoria usando la dirección dada por el contenido de
ALUOut y el contenido del registro B como dato.
18
Camino de datos y control: implementación microprogramada
Formato de microinstrucción: campos
Campo
ControlEscrPC
Valor
simbólico
Señales
activas
Comentario
ALU
PCSource = 00
PCWrite
Escribe la salida de la UAL en el PC.
ALUOut-Cond
PCSource = 01
PCWriteCond
Si la salida Zero de la UAL está activa, escribe en el PC el
contenido del registro ALUOut.
JumpAddress
PCSource = 10
PCWrite
Escribe en el PC la dirección de salto de la instrucción.
Seq
AddCtl = 11
Selecciona la siguiente microinstrucción.
Fetch
AddCtl = 00
Selecciona la microinstrucción 0 para comenzar la fase de lectura
de una nueva instrucción.
Dispatch1
AddCtl = 01
Selecciona la siguiente microinstrucción mediante la tabla de
envío 1.
Dispatch2
AddCtl = 10
Selecciona la siguiente microinstrucción mediante la tabla de
envío 2.
Secuenciación
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/
Register fetch
Instruction fetch
Memory reference FSM
(Figure 5.38)
Etiqueta
ControlALU
Fuente1
Fuente2
Fetch
Add
PC
4
Add
PC
Extshft
Control
Registros
W')
= 'S
=
(Op
yp
R-T
e)
'B
EQ
')
')
'LW
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
R-type FSM
(Figure 5.39)
Branch FSM
(Figure 5.40)
(Op = 'JMP')
=
(Op
Op
or (
1
=
Start
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
p
Microinstrucción 0 (instruction fetch):
•Leer de memoria la instrucción y
cargarla en IR.
•Incrementar el PC sumándole 4.
Microinstrucción 1:
•Decodificar la instrucción.
•Leer dos registros del banco y
guardarlos en A y B.
•Calcular la hipotética dirección de
ramificación y guardarla en ALUOut.
•Saltar según tabla de envío 1.
(O
 Acciones:
0
Jump FSM
(Figure 5.41)
Memoria
Control
EscrPC
Secuenciación
ReadPC
ALU
Seq
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
Fuente1
Fuente2
Mem1
Add
A
Extend
Control
Registros
Memoria
(Op = 'LW')
Memory
access
Memory
access
3
5
MemRead
IorD = 1
MemWrite
IorD = 1
Write-back step
4
RegWrite
MemtoReg = 1
RegDst = 0
Control
EscrPC
To state 0
(Figure 5.37)
Secuenciación
Dispatch2
LW2
ReadALU
WriteMDR
SW2
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
')
W
'S
ControlALU
Memory address computation
2
=
Etiqueta
(Op = 'LW') or (Op = 'SW')
p
(O
Microinstrucción 2:
•Calcular la dirección del dato en memoria y guardarla en ALUOut.
•Saltar según tabla de envío 2.
Si Op=LW
Microinstrucción 3:
•Leer dato de memoria y guardarlo en MDR.
Microinstrucción 4:
•Escribir el contenido de MDR en el banco de registros.
•Saltar a microinstrucción 0 (fetch).
Si Op=SW
Microinstrucción 5:
•Grabar en memoria el contenido de B en la dirección ALUOut.
•Saltar a microinstrucción 0 (fetch).
Seq
Fetch
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:
•Sumar los contenidos de los registros A y B y guardar el resultado
en ALUOut.
Microinstrucción 7:
•Escribir el contenido de ALUOut en el banco de registros.
•Saltar a microinstrucción 0 (fetch).
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 10
R-type completion
7
RegDst = 1
RegWrite
MemtoReg = 0
To state 0
(Figure 5.37)
Etiqueta
ControlALU
Fuente1
Fuente2
Rformat1
FuncCode
A
B
Control
Registros
Memoria
Control
EscrPC
Secuenciación
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
(Op = 'BEQ')
 Acciones:
Microinstrucción 8:
•Restar los contenidos de A y B.
•En función de la condición de resultado nulo, escribir en el PC el
contenido de ALUOut.
•Saltar a microinstrucción 0 (fetch).
Branch completion
8
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
To state 0
(Figure 5.37)
Etiqueta
ControlALU
Fuente1
Fuente2
BEQ1
Subt
A
B
Control
Registros
Memoria
Control
EscrPC
Secuenciación
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
(Op = 'J')
 Acciones:
Microinstrucción 9:
•Escribir en el PC la dirección de salto procedente del desplazador.
•Saltar a microinstrucción 0 (fetch).
Jump completion
9
PCWrite
PCSource = 10
To state 0
(Figure 5.37)
Etiqueta
ControlALU
Fuente1
Fuente2
Control
Registros
Memoria
JUMP1
Control
EscrPC
Secuenciación
Jump address
Fetch
25
Camino de datos y control: implementación microprogramada
Microcódigo completo
Etiqueta
ControlALU
Fuente1
Fuente2
Fetch
Add
PC
4
Add
PC
Extshft
Add
A
Extend
Mem1
Control
Registros
Memoria
Control
EscrPC
Secuenciación
ReadPC
ALU
Seq
Read
Dispatch1
Dispatch2
LW2
ReadALU
Seq
WriteMDR
SW2
Rformat1
Fetch
WriteALU
FuncCode
A
Fetch
B
Seq
WriteALU
BEQ1
Subt
A
Fetch
B
JUMP1
Tabla de
envío 1
ALUOut-Cond
Seq
Jump address
Fetch
Op[5-0]
Instrucción
Valor simbólico
000000
Instrucción R
Rformat1
000010
Instrucción J
JUMP1
Op[5-0]
Instrucción
Valor simbólico
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
Tabla de envío 2
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
control) o en una PLA.
Microcode
storage
Datapath
control
outputs
Outputs
 La lógica de selección de
dirección es la misma que en el
enfoque del secuenciador.
Input
 Las tablas de envío pueden
residir en sendas ROM o PLA.
 Las PLA son más pequeñas,
excepto cuando la función de
control es muy densa.
1
Microprogram counter
Sequencing
control
Adder
Address select logic
 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.
Línea de condición
Wilkes.
1
0
nd
MUX
nd
nd
Registro
Instrucción
Reg.
Reloj
Señales de control
S1 S2
S3
Siguiente dirección
Sn
nd
Decodificador
de
direcciones
000...0
000...0
000...11
Dx.c
Dx.c'
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
Descargar