Procesador: camino de
datos y unidad de control
Índice
√ Introducción
√ Estructura básica de la CPU: camino de datos y
control
√ El ciclo de instrucción
√ Diseño de un procesador monociclo
√ Descomposición de la ejecución en etapas
√ Realización multiciclo
√ Diseño de la unidad de control
√ Procesamiento de excepciones
Introducción
En este tema se estudia la Unidad Central de Procesamiento (CPU)
Camino de datos:
Es la sección del computador encargada de manipular y transformar los
datos procedentes de la memoria o los registros internos, para obtener los
resultados
Su labor es soportar el conjunto de operaciones que precisan las
instrucciones del repertorio que es capas de interpretar la unidad de control
Unidad de control:
Es la sección del computador encargada de interpretar las instrucciones del
programa y gobernar la ejecución de las mismas
Introducción
El procesador es el que se encarga de ejecutar las
instrucciones especificadas por el programa.
Funciones básicas:
Captar instrucciones. El procesador debe leer instrucciones
de la memoria
Interpretar instrucciones. La instrucción debe decodificarse
para determinar qué acción es necesaria
Captar datos. La ejecución puede exigir leer datos de la
memoria o de un módulo de E/S
Procesar datos. La ejecución de una instrucción puede
exigir llevar a cabo alguna operación aritmética o lógica
Escribir datos. Los resultados de una ejecución pueden
tener que ser escritos en la memoria o en un módulo de E/S
Estructura básica de un procesador
El procesador se compone de
varias partes:
1. La unidad de control
2. La unidad aritmético-lógica
3. Un banco de registros
Datos
PC Dirección Registros
nº de registro ALU Dirección
Instrucción
nº de registro Memoria
Memoria de
instrucciones nº de registro de Datos
Datos
Estructura básica de un procesador
Metodología de sincronización
Las unidades funcionales se clasifican en dos tipos:
combinacionales y secuenciales
La metodología de sincronización define cuándo pueden leerse y
escribirse la diferentes señales
Asumimos sincronización por flancos
Ciclo de reloj
El ciclo de instrucción
El procesamiento que requiere una instrucción se denomina
ciclo de instrucción.
Ciclo básico de instrucción:
INICIO
Captura de
Ciclo de captación
instrucción
Ejecución de
Ciclo de ejecución
la instrucción
FIN
El ciclo de instrucción
Para el subconjunto de instrucciones MIPS, los dos primeros pasos son
idénticos:
Usar el contenido del PC para cargar, desde la memoria que contiene el
código, la siguiente instrucción
Leer uno o dos registros, utilizando para ello los campos de la instrucción
específicos para seleccionarlos
Memoria Procesador
Procesador monociclo:
Sumador
4
PC Dirección
Instrucción
Memoria de
instrucciones
Dato
Reg. de leído 1 ALU
lectura 2 Cero
Reg. de Resultado
escritura Dato de la ALU
Dato a leído 2
escribir
EscribirReg
Diseño de un camino de datos sencillo
Acceso a memoria:
Instrucciones lw y sw
La dirección se indica con un registro más un
desplazamiento de 16 bits con signo
El desplazamiento se extiende a 32 bits
3 Operación de la ALU
Reg. de
Instrucción lectura 1 EscribirMem
REGISTROS
Dato ALU
Reg. de leído 1
lectura 2 Cero
Saltos condicionales:
Evalúan si dos registros contienen ó no el mismo
valor
Si la condición se cumple aplican el salto
El salto es relativo con signo
Los 16 bits se extienden a 32 y se desplazan 2
posiciones a la izquierda para direccionar sólo
palabras completas
El PC ya se ha actualizado a PC + 4
Dato
Reg. de leído 1
lectura 2 Decidir si se
Cero hace el salto
Reg. de
escritura Dato ALU
Dato a leído 2
escribir
EscribirReg
16 32
Extensión
de signo
Diseño de un camino de datos sencillo
Todo junto:
Para construir el camino de datos hemos de
combinar los elementos explicados anteriormente
Intentaremos reutilizar parte del hardware
El hardware compartido selecciona los datos
mediante multiplexores
Parte del hardware no se podrá reutilizar y habrá que
replicarlo
Dato
Reg. de leído 1 ALU
Mem2reg
lectura 2 Fuente Cero
Reg. de ALU Resultado Dato
escritura Dato de la ALU Dirección M
M leído u
leído 2
Dato a u Memoria x
escribir de Datos
x
EscribirReg Dato a
escribir
16 32
Extensión
de signo
LeerMem
Diseño de un camino de datos sencillo
Incorporamos gestión de PC
Sumador
4
Dirección Reg. de 3 Operación de la ALU
de lectura lectura 1
P EscribirMem
REGISTROS
Dato
C Instrucción Reg. de ALU
leído 1 Mem2reg
lectura 2 Fuente Cero
Memoria de Reg. de ALU Resultado
instrucciones Dirección Dato M
escritura Dato de la ALU leído
leído 2 M u
Dato a u Memoria x
escribir de Datos
x
EscribirReg Dato a
escribir
16 32
Extensión
de signo
LeerMem
M
u
Sumador x
4 Resultado
Desp.
2 bits a Sumador
la izq.
Dato
C Instrucción Reg. de ALU
leído 1 Mem2reg
lectura 2 Fuente Cero
Memoria de Reg. de ALU Resultado
instrucciones Dirección Dato M
escritura Dato de la ALU leído
leído 2 M u
Dato a u Memoria x
escribir de Datos
x
EscribirReg Dato a
escribir
16 32
Extensión
de signo
LeerMem
Diseño de la unidad de control
Realización monociclo: señales de control
Op4 0 0 0 0
Op3 0 0 1 0
Op2 0 0 0 1
Op1 0 1 1 0
Ejercicio:
Op0 0 1 1 0
RegDest 1 0 X X
Mapas de Karnaugh
ALUSrc 0 1 1 0
MemtoReg 0 1 X X
Implementación
RegWrite 1 1 0 0
combinacional
salidas
MemRead 0 1 0 0
MemWrite 0 0 1 0
Branch 0 0 0 1
ALUOp1 1 0 0 0
ALUOp0 0 0 0 1
Inconvenientes de la implementación
monociclo
El ciclo de reloj está definido por la instrucción
más lenta
No es posible reutilizar ninguna unidad funcional
2 ns PC + 4 [31-28] M x
u
2 ns
Sumador RegDest x
4 SaltoIncond Resultado
Salt Cond Desp.
2 bits a Sumador
LeerMem
Inst. [31-26] la izq.
Control Mem2reg
EscribirMem
Fuente ALU
Dirección ALUop
de lectura EscribirReg
Inst. [25-21] Reg. de
2 ns
P lectura 1
REGISTROS
Dato
1 ns
C Instrucción Inst. [20-16] Reg. de ALU
leído 1
2 ns
lectura 2 Cero
Memoria de M Reg. de Resultado
instrucciones Dirección Dato M
u escritura Dato de la ALU
2 ns
Inst. [15-11] M leído u
x leído 2
Dato a u Memoria x
escribir de Datos
x
Dato a
escribir
Inst. [15-0] 16 32
Extensión Control
de signo de la
ALU
Inst. [5-0]
Tipo de
Unidades funcionales utilizadas por cada tipo de instrucción ns
instrucción
Cargar Lectura de Escritura de
Aritmética ALU 6
instrucción registros registros
Cargar Lectura de Lectura Escritura de
lw ALU 8
instrucción registros memoria registros
Cargar Lectura de Escritura en
sw ALU 7
instrucción registros memoria
Salto Cargar Lectura de
ALU 5
condicional instrucción registros
Cargar
Jump 2
instrucción
Evaluación del rendimiento
Reducción de costes
Inst. [25-0] Desp.
2 bits a Dirección de jump. [31-0]
26 la izq. 28
M
u
PC + 4 [31-28] M x
u
Sumador x
4 Resultado
Desp.
2 bits a Sumador
Inst. [31-26] la izq.
Control
Dirección
de lectura
Dato
C Instrucción Inst. [20-16] Reg. de ALU
leído 1
lectura 2 Cero
Memoria de M Reg. de Resultado
instrucciones Dirección Dato M
Inst. [15-11] u escritura Dato de la ALU leído
leído 2 M u
x Dato a Memoria
u x
escribir de Datos
x
Dato a
escribir
16 32
Inst. [15-0] Extensión Control
de signo de la
ALU
Inst. [5-0]
Reducción de costes
Inst. [25-0] Desp.
2 bits a Dirección de jump. [31-0]
26 la izq. 28
M
u
PC + 4 [31-28] M x
u
Sumador x
4 Resultado
Desp.
2 bits a Sumador
Inst. [31-26] la izq.
Control
Dirección
de lectura
REGISTROS
Dato
C Instrucción Inst. [20-16] Reg. de ALU
leído 1
lectura 2 Cero
Memoria de M Reg. de Resultado
instrucciones Dirección Dato M
Inst. [15-11] u escritura Dato de la ALU leído
leído 2 M u
x Dato a Memoria
u x
escribir de Datos
x
Dato a
escribir
16 32
Inst. [15-0] Extensión Control
de signo de la
ALU
Inst. [5-0]
Implementación multiciclo
Registro de Reg. de
instrucciones lectura 1
Memoria A
REGISTROS
P Dato
Dirección Reg. de leído 1
C lectura 2
Instrucciones ALU SalidaALU
o datos Reg. de
escritura Dato
Dato Resgistro de leído 2 B
Dato a
datos de escribir
memoria
Implementación multiciclo
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
Carga de una instrucción IR=Memoria[PC]
PC=PC+4
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
Instrucciones Aritmético-Lógicas: Ejecución
ALUOut = A op B
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
Instrucción lw:
Búsqueda de registros A=Reg[IR[25-21]]
B=Reg[IR[20-16]]
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
Instrucción lw:
Cálculo de la dirección
ALUOut = A + signo extendido (IR[15-0])
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
Instrucción lw:
Lectura de memoria MDR=Memoria[ALUOut]
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
Instrucción lw:
Guarda dato en registro
Reg[IR[20-16]] = MDR
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
Instrucción sw:
Búsqueda de registros A=Reg[IR[25-21]]
B=Reg[IR[20-16]]
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
Instrucción sw:
Cálculo de la dirección
ALUOut = A + signo extendido (IR[15-0])
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
Instrucción sw:
Escritura en memoria Memoria[ALUOut] = B
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
Instrucción beq:
Búsqueda de registros A=Reg[IR[25-21]]
B=Reg[IR[20-16]]
ALUOut = PC + (signo extendido (IR[15-0]) << 2)
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
Instrucción beq:
Comprobación con éxito If (A==B) PC = ALUOut
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
Instrucción beq:
Comprobación sin éxito
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
Instrucción Jump:
Ejecución del salto PC = PC[31-28] || (IR[25-0] <<2)
0
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos Registro de leído 2
Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
signo 32 2 bits a
16 la izq.
CPI multiciclo
Aritmética 44 4
lw 24 5
sw 12 4
Salto condicional 18 3
Jump 2 3
4,04
0
IoD Mem2Reg
1
M
Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
Datos Registro de 1
x Dato a leído 2
M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro
1x
de datos de
memoria Exten. Desp.
2 bits a Control
16 signo 32 ALU
la izq.
ALUop
Diseño de la unidad de control
Realización multiciclo: señales de control
EscrPC Cond
EscrPC FuentePC
IoD ALUop
LeerMem SelALUB
EscrMem Control SelALUA
Mem2Reg 0
EscrReg
M
EscrIR OP RegDest 1
[31-26] Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de A
u leído 1 ALU
1x
Dirección [20-16] lectura 2
1x Instrucciones 0 Cero
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
1x
Datos leído 2
Registro de Dato a M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro
1x
de datos de
memoria Exten. Desp.
2 bits a Control
16 signo 32 ALU
la izq.
Control cableado
Realización de máquinas de estados finitos de control:
Estado 0 Estado 1
Decodificar
Inicio Carga instrucciones
de Cargar
instrucción Registros
EscrPC Cond
EscrPC FuentePC
IoD ALUop
LeerMem SelALUB
EscrMem Control SelALUA
Mem2Reg EscrReg 0
M
EscrIR OP RegDest 1
[31-26] Salto u
Desp. 28 incond. [31-0] x
Instrucción [25-0] 26
2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones Cero
1 Estado 0
Instrucción
0
M Reg. de
o datos LeerMem
Instr.
[15-0] u escritura Dato Salida
[15-11]
SelALUA = 0 B 0 Resultado ALU
Datos Registro de x leído 2 M ALU
Inicio selALUB = 01 Dato aA Estado 1
1
instrucción escribir 4 1
ALUOp = 00 u
Instr. IoD =00M 2
x
[15-0] EscrIRu 3
Registro EscrPCx
de datos de FuentePC1 = 00
memoria Exten. Desp.
2 bits a Control
16 signo 32 ALU
la izq.
Estado 1. Decodificación
EscrPC Cond
EscrPC FuentePC
IoD ALUop
LeerMem SelALUB
EscrMem Control SelALUA
0
Mem2Reg EscrReg M
EscrIR OP RegDest 1
[31-26] Salto u
26
Desp. 28 incond. [31-0] x
Instrucción [25-0] 2 bits a 2
la izq.
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU
Datos Registro de 1
x Dato a leído 2
M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
Estado 1 [15-0] u 3
Registro x
1
De Estado 0 SelALUA = 0 Estado
de datos?de
memoria Exten. Desp.
selALUB = 11 Control
signo 32 2 bits a
ALUOp = 00 16 ALU
la izq.
Control del acceso a memoria
De Estado 1
(Op = “LW”) o (Op = “ SW”)
Estado 2
SelALUA = 1 Cálculo
selALUB = 10 dirección de
ALUOp = 00 memoria
Estado 4
Etapa de escritura
Esc rReg
Mem2R eg = 1 Vuelta al
RegDest = 0 Estado 0
De Estado 1
(Op = Aritmético-lógica)
Estado 6
SelALUA = 1 Ejecución de la
selALUB = 00 operación
A LUOp = 10
(Op = “LW”)
Estado 7
RegDest = 1 Finalización de
EscrRe g la operación
M em2R eg
Vuelta al
Estado 0
Control de beq
De Estado 1
(Op = “beq”)
Estado 8
SelALUA = 1 Finalización
selALUB = 00 de salto condicional
ALUOp = 01
EscrPCCond
FuentePC = 01
Vuelta al
Estado 0
Control de jump
De Estado 1
(Op = “j”)
Estado 9
Finalización
EscrPCC ond
FuentePC = 10 de jump
Vuelta al
Estado 0
Máquina de estados completa
Estado 0 Estado 1
LeerMem
SelALUA = 0
Inicio selALUB = 01 SelALUA = 0
ALUOp = 00 selALUB = 11
IoD = 0 ALUOp = 00
EscrIR
EscrPC
a)
FuentePC = 00
gic
-ló
(O
(Op
= “j
co
p=
W”) ”)
éti
p = “S
“be
itm
”) o (O
= “LW
Ar
q”)
Finalización
(Op
p=
Estado 2 Estado 6 Estado 9 de jump
Estado 8
(O
SelALUA = 1 Finalización
SelALUA = 1 Cálculo Ejecución de la SelALUA = 1 selALUB = 00
de salto condicional EscrPCCond
selALUB = 10 dirección de operación selALUB = 00 ALUOp = 01 FuentePC = 10
ALUOp = 00 memoria ALUOp = 10 EscrPCCond
FuentePC = 01
RegDest = 1 Finalización de
LeerMem EscrMem EscrReg
IoD = 1 I0D = 1 la operación
Mem2Reg
Acceso a Acceso a
memoria memoria
Estado 4
Etapa de escritura
EscrReg
Mem2Reg = 1
RegDest = 0
Implementación física
Señales de control
Salidas para el
camino de datos
Concepto Bits
Estado 4
FuentePC (2)
ALUop (2)
SelALUA Código de
SelALUB (2) operación desde
el registro de
EscrReg instrucción Señales
de control
ROM única
RegDest
Salidas EscrPC cond 10
2 palabras de 20 bits
EscrPC
Lógica de control IoD = 20480 bits
LeerMem Estado Nuevo
estado
ROM 1
Señales
Entradas Estado
24 palabras de 16 bits
de control
= 256 bits
O p5
PLA O p4
O p3
O p2
O p1
FuentePC (2) O p0
ALUop (2)
SelALUA S3
SelALUB (2)
EscrReg
RegDest S2
Salidas EscrPC cond
EscrPC S1
Lógica de control IoD
LeerMem S0
PLA y/ó ROM EscrMem
Mem2Reg
EscrIR EscrPC
EscrPC cond
IoD
LeerMem
Entradas
EscrMem
IEscrIR
Mem2Reg
FuentePC1
Código de operación Registro de estado FuentePC2
Bits [31-26] del ALUOp1
registro de instrucción ALUOp2
SelALUB1
SelALUB0
SelALUA
EscrReg
RegDest
NS3
NS2
NS1
NS0
Control microprogramado
Cada grupo de señales causa la ejecución de una operación básica
específica: microoperación.
La interpretación y ejecución de una instrucción da lugar a una
secuencia de operaciones máquina básicas (microoperaciones),
cada una controlada por un grupo de señales de control,
microinstrucción.
Una secuencia de microinstrucciones constituye un microprograma.
El código de operación de una instrucción máquina, cuando es
decodificado, señala la microrrutina apropiada incluida en la
memoria microprogramada.
Las microinstrucciones suelen estar ubicadas en una ROM o en una
PLA, por lo que pueden asignarse direcciones a las
microinstrucciones.
Control microprogramado
FuentePC (2)
ALUop (2)
SelALUA
SelALUB (2)
EscrReg
RegDest
Salidas EscrPC cond
EscrPC
Lógica de control IoD
LeerMem
PLA y/ó ROM EscrMem
Mem2Reg
EscrIR
Entradas
CtrlDir
• El sumador avanza
secuencialmente por los
1
4 estados
Registro de estado
Sumador
• No en todos los casos se
6
Selección pasa al estado siguiente:
• CtrlDir
Código de operación
Bits [31-26] del • Selección
registro de instrucción
Secuencia de estados
Tras terminar una instrucción se ha de retornar al estado 0
Las instrucciones sólo tienen algunos estados en común, después divergen
Esta divergencia puede ocurrir en varios lugares en el diagrama de estados
Necesitamos contemplar estos casos
• Nueva instrucción
1
4
• CtrlDir = 1
Sumador Registro de estado
6
• Tipo de instrucción
MUX
3 2 1 0
• CtrlDir = 2
0
• Leer/escribir memoria
Tabla de envío 2 Tabla de envío 1
Selección
• CtrlDir = 3
Código de operación
Bits [31-26] del
registro de instrucción
• Secuencia normal
Secuencia de estados
Escr Mem Ir a 0
SW2 Escr ALU Ir a 0
101011 sw Mem1
Procesamiento de excepciones
Acciones a realizar:
Procesamiento de excepciones
Camino de datos con los elementos necesarios para el
procesamiento de excepciones:
EscrCausa
CausaInt
EscrPC Cond EscrEPC
EscrPC FuentePC
IoD ALUop
LeerMem SelALUB
EscrMem Control SelALUA
Mem2Reg 0
EscrReg M
OP Salto 1
EscrIR RegDest Desp. 28 incond. [31-0] u
[31-26] Instrucción [25-0] 26
2 bits a 2
x
la izq. 3
C0000000
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
x Instrucciones 0 Cero
1
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU EPC
Datos Registro de 1
x Dato a leído 2
M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro
1x
de datos de
memoria Exten. Desp.
2 bits a Control
16
signo 32 ALU
la izq.
Procesamiento de excepciones
EscrCausa
CausaInt
EscrPC Cond EscrEPC
EscrPC FuentePC
IoD ALUop
LeerMem SelALUB
EscrMem Control SelALUA
Mem2Reg 0
EscrReg M
OP Salto 1
EscrIR RegDest Desp. 28 incond. [31-0] u
[31-26] Instrucción [25-0] 26
2 bits a 2
x
la izq. 3
C0000000
PC [31-28]
Instrucción Reg. de 0
P [25-21] lectura 1 M
0
M
REGISTROS
C Memoria Dato u
Instrucción Reg. de leído 1 A
u Dirección x ALU
[20-16] lectura 2 1
1x Instrucciones 0 Cero
Instrucción M Reg. de
o datos Instr.
[15-0] u escritura Dato Resultado
Salida
[15-11] B 0 ALU EPC
Datos Registro de 1
x Dato a leído 2
M ALU
instrucción escribir 4 1
u
Instr. 0 2
M x
[15-0] u 3
Registro x
1
de datos de
memoria Exten. Desp.
2 bits a Control
16 signo 32 ALU
la izq.
Procesamiento de excepciones
Estado 0 Estado 1
LeerMem
SelALUA = 0
Inicio selALUB = 01 SelALUA = 0
ALUOp = 00 selALUB = 11
IoD = 0 ALUOp = 0 0
EscrIR
EscrPC
)
as
FuentePC = 00
gi c
(Op
(O
-Ló
W ”) = “j”
p=
(O
p = “S )
rit m
p=
”) o (O
“b e
= “LW otr
=A
(Op os Finalización
q”)
) de jump
p
S elALUA = 1 Finalización
SelALUA = 1 Cálculo Ejecución de la SelAL UA = 1
dirección de s elALUB = 0 0 de salto condicional EscrPCCond
selALUB = 1 0 operac ión selALUB = 00 ALUOp = 01 Fuente PC = 10
ALUOp = 00 memoria ALUOp = 10 Es crPCCond
FuentePC = 01
RegDest = 1
Estado 10 Estado 11
LeerMem EscrMem CausaInt=0 CausaInt=1
EscrReg EscrCausa EscrCausa
IoD = 1 I0D = 1 Mem2Reg SelALUA = 0 SelALUA = 0
Acceso a Acc eso a selALUB = 01 selALUB = 01
memoria memoria Des bordamiento ALUOp = 01 ALUOp = 01
Es crEPC EscrEPC
EscrPC EscrPC
FuenteP C = 11 FuentePC = 11
Estado 4
Etapa de escritura
EscrReg
Mem2R eg = 1
RegDes t = 0