Tema 4
El 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
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
La organización de los procesadores ha evolucionado con el paso
de los años, guiada por el desarrollo tecnológico y la necesidad de
obtener altas prestaciones
En este tema se analizan las ideas básicas comunes a todos los
procesadores, que sientan las bases para poder comprender los
avances en arquitectura de computadores
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
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
4.
Otros registros internos, algunos
de los más importantes:
1.
El
contador de programa
(PC)
2.El
registro de instrucciones
(IR)
Estructura básica de un procesador
Vamos a construir un camino de datos y su unidad de
control para dos realizaciones diferentes de un
subconjunto del repertorio de instrucciones del MIPS:
√
Instrucciones de acceso a memoria: lw, sw
√
Instrucciones aritmético-lógicas: add, sub, or, slt
√
Instrucción de salto condicional: beq
√
Instrucción de salto incondicional: j
Memoria de
instrucciones
Instrucción
Dirección
Memoria
de Datos
Dirección
Datos
Datos
nº de registro
nº de registro
nº de registro
Registros
PC
ALU
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
Estado 1
Estado 2
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
instrucción
Ejecución de
la instrucción
FIN
Ciclo de captación
Ciclo de ejecución
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
0x40000000 00000001010010110100100000100000 0x40000004 10010101001010100000000000000000 0x40000008 00010001010010111111111111111011 0x4000000C 00000000100001000001000100001010 0x40000004 PC 00000001010010110100100000100000 IR 0x40000000 00000001010010110100100000100000 0x40000008 00010001010010111111111111111011 0x4000000C 00000000100001000001000100001010 0x40000004 10010101001010100000000000000000 0x40000004 PC 1001010100101010000000000000000 IR 0x40000000 00000001010010110100100000100000 0x40000004 10010101001010100000000000000000 0x40000008 00010001010010111111111111111011 0x4000000C 00000000100001000001000100001010 0x40000008 PC 1001010100101010000000000000000 IR
Memoria Procesador
Diseño de un camino de datos sencillo
Procesador monociclo:
√
Comenzaremos por los elementos básicos y sus
funciones asociadas
√
Veremos los elementos necesarios para
implementarlos
√
Veremos un conjunto de instrucciones básico
Diseño de un camino de datos sencillo
Contador de programa:
√
Cada instrucción está en una dirección de memoria dada
√
Almacenamos la dirección en el registro PC
√
Tras procesar una instrucción avanzamos el contador hasta la
siguiente instrucción
Memoria de
instrucciones
Instrucción
Dirección
PC
Sumador
4
Diseño de un camino de datos sencillo
Operaciones tipo R:
√
Involucran tres registros: dos de lectura y uno de
escritura
√
Usan la ALU para realizar las operaciones
Instrucción
EscribirReg
Reg. de
lectura 1
Dato a
escribir
Dato
leído 1
Dato
leído 2
Reg. de
lectura 2
Reg. de
escritura
R
E
G
IS
T
R
O
S
3
Operación de la ALU
Cero
Resultado
de la ALU
ALU
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
lw $t0, 8($s0)
100011
10000
01000
0000000000001000
Diseño de un camino de datos sencillo
Memoria
de Datos
Dirección
Dato a
escribir
Dato
leído
Instrucción
16
32
3
Operación de la ALU
EscribirReg
LeerMem
EscribirMem
Reg. de
lectura 1
Dato a
escribir
Dato
leído 1
Dato
leído 2
Reg. de
lectura 2
Reg. de
escritura
R
E
G
IS
T
R
O
S
Cero
Resultado
de la ALU
ALU
Extensión
de signo
Diseño de un camino de datos sencillo
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
Diseño de un camino de datos sencillo
Instrucción
16
32
EscribirReg
Reg. de
lectura 1
Dato a
escribir
Dato
leído 1
Dato
leído 2
Reg. de
lectura 2
Reg. de
escritura
R
E
G
IS
T
R
O
S
3
Operación de la ALU
Cero
ALU
Extensión
de signo
Desp.
2 bits a
la izq.
Resultado
Sumador
PC +4 del camino de datos de instrucciones
Destino salto
Decidir si se
hace el salto
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
Diseño de un camino de datos sencillo
Instrucción
16
32
EscribirReg
Fuente
ALU
Mem2reg
Reg. de
lectura 1
Dato a
escribir
Dato
leído 1
Dato
leído 2
Reg. de
lectura 2
Reg. de
escritura
R
E
G
IS
T
R
O
S
Memoria
de Datos
Dirección
Dato a
escribir
Dato
leído
3
Operación de la ALU
LeerMem
EscribirMem
Cero
Resultado
de la ALU
ALU
Extensión
de signo
M
u
x
M
u
x
Diseño de un camino de datos sencillo
16 32 EscribirReg Fuente ALU Mem2reg Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escrituraR
E
G
IS
T
R
O
S
Memoria
de Datos
Dirección Dato a escribir Dato leído 3 Operación de la ALU LeerMem EscribirMem Cero Resultado de la ALUALU
Extensión de signoM
u
x
M
u
x
Memoria de
instrucciones
Instrucción Dirección de lecturaP
C
Sumador 4Incorporamos gestión de PC
Diseño de un camino de datos sencillo
16 32 EscribirReg Fuente ALU Mem2reg Origen del PC Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escrituraR
E
G
IS
T
R
O
S
Memoria
de Datos
Dirección Dato a escribir Dato leído 3 Operación de la ALU LeerMem EscribirMem Cero Resultado de la ALUALU
Extensión de signoM
u
x
M
u
x
M
u
x
Memoria de
instrucciones
Instrucción Dirección de lecturaP
C
Sumador 4 Desp. 2 bits a la izq. ResultadoSumador
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
Estos inconvenientes se verían agravados en
una arquitectura más compleja que la
arquitectura MIPS
Evaluación del rendimiento
√
Supóngase los tiempos de ejecución de las unidades
funcionales siguientes:
Acceso a memoria: 2ns
ALU y sumadores: 2ns
Acceso a registros: 1ns
√
¿Cúal de las siguientes realizaciones será más rápida?
Una realización en la que cada instrucción se ejecuta en un ciclo
de tamaño fijo (cada instrucción tarda lo que tardaría la más
lenta).
Una realización donde cada instrucción se ejecuta en un ciclo de
longitud variable (cada instrucción tarda únicamente lo
necesario)
Cálculo del ciclo de reloj
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura R E G IS T R O S Cero Resultado de la ALU ALU Extensión de signo Control M u x M u x Memoria de instrucciones Instrucción Dirección de lectura P C Sumador 4 Desp. 2 bits a la izq. Desp. 2 bits a la izq. Inst. [25-21] Inst. [20-16] Inst. [15-11] Inst. [31-26] Inst. [25-0] 26 28 Dirección de jump. [31-0] PC + 4 [31-28] 16 32 Control de la ALU Resultado Sumador Inst. [15-0] Inst. [5-0] Memoria de Datos Dirección Dato a escribir Dato leído Mu x M u x M u x EscribirReg SaltoIncond RegDest Fuente ALU Salt Cond ALUop Mem2reg LeerMem EscribirMem1 ns
1 ns
2 ns
2 ns
2 ns
2 ns
2 ns
2 ns
2 ns
2 ns
2 ns
2 ns
Cálculo del ciclo de reloj
Tipo de
instrucción
Unidades funcionales utilizadas por cada tipo de instrucción
ns
Aritmética
Cargar
instrucción
Lectura de
registros
ALU
Escritura de
registros
6
lw
Cargar
instrucción
Lectura de
registros
ALU
Lectura
memoria
Escritura de
registros
8
sw
Cargar
instrucción
Lectura de
registros
ALU
Escritura en
memoria
7
Salto
condicional
Cargar
instrucción
Lectura de
registros
ALU
5
Jump
Cargar
instrucción
2
Evaluación del rendimiento
Tiempo medio ejecución para monociclo:
8 ns
Tiempo medio ejecución ideal:
6 x 44% + 8 x 24% + 7 x 12% + 5 x 18% + 2 x 2% =
6.3 ns
Rendimiento relativo: 8 / 6.3 = 1.27
Aritméticas: 44%
lw: 24%
sw: 12%
Reducción de costes
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura R E G IS T R O S Cero Resultado de la ALU ALU Extensión de signo Control M u x M u x Memoria de instrucciones Instrucción Dirección de lectura P C Sumador 4 Desp. 2 bits a la izq. Desp. 2 bits a la izq. Inst. [25-21] Inst. [20-16] Inst. [15-11] Inst. [31-26] Inst. [25-0] 26 28 Dirección de jump. [31-0] PC + 4 [31-28] 16 32 Control de la ALU Resultado Sumador Inst. [15-0] Inst. [5-0] Memoria de Datos Dirección Dato a escribir Dato leído Mu x M u x M u xReducción de costes
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura R E G IS T R O S Cero Resultado de la ALU ALU Extensión de signo Control M u x M u x Memoria de instrucciones Instrucción Dirección de lectura P C Sumador 4 Desp. 2 bits a la izq. Desp. 2 bits a la izq. Inst. [25-21] Inst. [20-16] Inst. [15-11] Inst. [31-26] Inst. [25-0] 26 28 Dirección de jump. [31-0] PC + 4 [31-28] 16 32 Control de la ALU Resultado Sumador Inst. [15-0] Inst. [5-0] Memoria de Datos Dirección Dato a escribir Dato leído Mu x M u x M u xImplementación multiciclo
Dedicaremos varios ciclos a cada instrucción
Necesitaremos
√
Más multiplexores
√
Más registros
Cada dato y resultado estará en un registro para
Esquema multiciclo
Reg. de
lectura 1
Dato a
escribir
Dato
leído 1
Dato
leído 2
Reg. de
lectura 2
Reg. de
escritura
R
EG
IST
R
O
S
Memoria
Instrucciones
o datos
Dirección
Resgistro de
datos de
memoria
Registro de
instrucciones
ALU
A
B
Dato
SalidaALU
P
C
Sin coste adicional
Implementación multiciclo
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUCarga de una instrucción
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUInstrucciones Aritmético-Lógicas: Búsqueda
de registros
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUInstrucciones Aritmético-Lógicas: Ejecución
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUInstrucciones Aritmético-Lógicas: Guarda
resultados en registro
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUInstrucción lw:
Búsqueda de registros
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUInstrucción lw:
Cálculo de la dirección
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUInstrucción lw:
Lectura de memoria
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUInstrucción lw:
Guarda dato en registro
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUInstrucción sw:
Búsqueda de registros
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUInstrucción sw:
Cálculo de la dirección
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUInstrucción sw:
Escritura en memoria
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUInstrucción beq:
Búsqueda de registros
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUInstrucción beq:
Comprobación con éxito
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALU
Instrucción beq:
Comprobación sin éxito
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALU
Instrucción Jump:
Ejecución del salto
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALUCPI multiciclo
Hemos repartido las operaciones de forma que
el tiempo máximo de computación es el de una
unidad funcional
La unidades más lentas necesitan 2 ns para
completar su funcionamiento
Por tanto el ciclo de reloj durará 2 ns
Por ejemplo, una operación aritmética necesita
CPI multiciclo
Tipo de instrucción
%
Multiciclo
Aritmética
44
4
lw
24
5
sw
12
4
Salto condicional
18
3
Jump
2
3
4,04
Diseño de la unidad de control
Diseño de la unidad de control
Diseño de la unidad de control
La función de control para una realización monociclo
está especificada por la siguiente tabla de verdad:
señal
Formato R
Lw
Sw
beq
Op5
0
1
1
0
Op4
0
0
0
0
Op3
0
0
1
0
Op2
0
0
0
1
Op1
0
1
1
0
Op0
0
1
1
0
RegDest
1
0
X
X
ALUSrc
0
1
1
0
MemtoReg
0
1
X
X
RegWrite
1
1
0
0
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
en
trad
as
sal
id
as
Ejercicio:
Mapas de Karnaugh
Implementación
combinacional
Diseño de la unidad de control
Realización multiciclo: señales de control
R E G IS T R O S Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0] M u x 0 1 M u x 0 1 M u x 0 1 M u x 0 1 M u x 0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq. Memoria Instrucciones o datos Dirección Datos P C Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28 M u x 0 1 2 Cero Resultado ALU ALU Salida ALU SelALUA EscrReg RegDest EscrIR EscrMem LeerMem IoD Escribir PC Mem2Reg Control ALU ALUop FuentePC SelALUB
Diseño de la unidad de control
Realización multiciclo: señales de control
R E G IS T R O S Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0] M u x 0 1 M u x 0 1 M u x 0 1 M u x 0 1 M u x 0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq. Memoria Instrucciones o datos Dirección Datos P C Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28 M u x 0 1 2 Cero Resultado ALU ALU Salida ALU SelALUA EscrReg RegDest EscrIR EscrMem LeerMem IoD Control OP [31-26] EscrPC EscrPC Cond Mem2Reg Control ALU ALUop FuentePC SelALUB
Diseño de la unidad de control
El control del camino de datos multiciclo debe
especificar:
√
Las señales que se van a inicializar en cada paso
√
El paso siguiente de la secuencia
Dos técnicas diferentes:
√
Control cableado
. Se basa en las máquinas de
estados finitos.
√
Control microprogramado
. Se representa en forma
de programa de control
Control cableado
Construiremos una máquina de estados finitos (autómata de
Moore)
El camino de datos multiciclo se controla con las salidas de la
unidad de control (la máquina de estados)
Las entradas de la unidad de control serán
√
Los bits de la instrucción
√
Los indicadores internos
Máquina de estados finitos:
√
Cada estado de la máquina representa una etapa y tarda un ciclo
de reloj
√
Los dos primeros pasos son idénticos para todas las instrucciones
√
A partir de la tercera etapa depende del código de operación
Control cableado
Realización de máquinas de estados finitos de control:
Estado 0
Inicio
Acceso a
memoria
Estado 1
Carga
de
instrucción
Decodificar
instrucciones
Cargar
Registros
Aritmético-lógicas
beq
jump
Estado 0. Cargar Instrucción
R E G IS T R O S Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0] M u x 0 1 M u x 0 1 M u x 0 1 M u x 0 1 M u x 0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq. Memoria Instrucciones o datos Dirección Datos P C Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28 M u x 0 1 2 Cero Resultado ALU ALU Salida ALU SelALUA EscrReg RegDest EscrIR EscrMem LeerMem IoD Control OP [31-26] EscrPC EscrPC Cond Mem2Reg Control ALU ALUop FuentePC SelALUBEstado 0
Inicio
LeerMem SelALUA = 0 IoD = 0 EscrIR EscrPC FuentePC = 00 selALUB = 01 ALUOp = 00A Estado 1
Estado 1. Decodificación
R
E
G
IS
T
R
O
S
Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0]M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1M
u
x
0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq.Memoria
Instrucciones o datos Dirección DatosP
C
Instr. [15-0] 16 26 32 4 Instr. [15-11] Instrucción [25-0] PC [31-28] Salto incond. [31-0] 28M
u
x
0 1 2 Cero Resultado ALUALU
Salida ALU SelALUA EscrReg RegDest EscrIR EscrMem LeerMem IoD Control OP [31-26] EscrPC EscrPC Cond Mem2Reg Control ALU ALUop FuentePC SelALUBEstado 1
De Estado 0
SelALUA = 0 selALUB = 11 ALUOp = 00Estado ?
Control del acceso a memoria
De Estado 1
Estado 4
Estado 5
Acceso a
memoria
Acceso a
memor ia
(Op = “LW”) o (Op = “SW”)
(Op = “LW”)
(Op = “SW”)
Cálculo
dirección de
memoria
Etapa de escritura
Estado 3
Estado 2
Vuelta al
Estado 0
SelALUA = 1 selALUB = 10 ALUOp = 00 Leer Mem IoD = 1 EscrMem I0D = 1 Esc rReg Mem2R eg = 1 RegDest = 0Control de operaciones aritmético-lógicas
De Estado 1
Finalización de
la operación
(O p = Aritmét ico-lógica)
(Op = “LW”)
Ejecución de la
operación
Estado 7
Estado 6
Vuelta al
Estado 0
S elALUA = 1
selALUB = 00
A LUOp = 10
RegDest = 1
EscrRe g
Mem2R eg
Control de beq
De Estado 1
(Op = “beq”)
Finalización
de salto condicional
Estado 8
Vuelta al
Estado 0
SelALUA = 1
selALUB = 00
ALUOp = 01
EscrPCCond
FuentePC = 01
Control de jump
De Estado 1
(Op = “j”)
Finalización
de jump
Estado 9
Vuelta al
Estado 0
Es crPCC ond
FuentePC = 10
Máquina de estados completa
Estado 0 Inicio LeerMem SelALUA = 0 IoD = 0 EscrIR EscrPC FuentePC = 00 selALUB = 01 ALUOp = 00 Estado 1 SelALUA = 0 selALUB = 11 ALUOp = 00 (Op = “LW ”) o (Op = “SW ”) Estado 4 Estado 5 Acceso a memoria Acceso a memoria (Op = “LW”) (Op = “SW”) Cálculo dirección de memoria Etapa de escritura Estado 3 Estado 2 SelALUA = 1 selALUB = 10 ALUOp = 00 LeerMem IoD = 1 EscrMem I0D = 1 EscrReg Mem2Reg = 1 RegDest = 0 Finalización de la operación (Op = A ritm étic o-ló gica ) Ejecución de la operación (O p = “b e q”) Finalización de salto condicional Estado 8 SelALUA = 1 selALUB = 00 ALUOp = 01 EscrPCCond FuentePC = 01 (Op =“j”) Finalización de jump Estado 9 EscrPCCond FuentePC = 10 (Op = “LW”) Estado 7 Estado 6 SelALUA = 1 selALUB = 00 ALUOp = 10 RegDest = 1 EscrReg Mem2RegImplementación física
Lógica de control
Salidas
Código de
operación desde
el registro de
instrucción
Señales de control
para el
camino de datos
Entradas
Registro de estado
Concepto
Bits
Señales de
control
16
Código de
operación
6
Estado
4
ROM
Lógica de control
PLA y/ó ROM
Salidas
Entradas
Código de operación
Bits [31-26] del
registro de instrucción
Registro de estado
FuentePC (2)
ALUop (2)
SelALUA
SelALUB (2)
EscrReg
RegDest
EscrPC cond
EscrPC
IoD
LeerMem
EscrMem
Mem2Reg
EscrIR
ROM única 2 palabras de 20 bits = 20480 bits 10 Código de operación desde el registro de instrucción Estado Nuevo estado Señales de control ROM 1 2 palabras de 16 bits = 256 bits 4Estado Señales de control
ROM 2 2 palabras de 4 bits = 4096 bits 10 Código de operación desde el registro de instrucción Estado Nuevo estado
PLA
Lógica de control PLA y/ó ROM
Salidas Entradas Código de operación Bits [31-26] del registro de instrucción Registro de estado FuentePC (2) ALUop (2) SelALUA SelALUB (2) EscrReg RegDest EscrPC cond EscrPC IoD LeerMem EscrMem Mem2Reg EscrIR O p5 O p4 O p3 O p2 O p1 O p0 S 3 S 2 S 1 S 0 IoD IEscrIR LeerMem EscrMem EscrPC EscrPC cond Mem2Reg FuentePC1 ALUOp1 SelALUB0 SelALUA EscrReg RegDest NS3 NS2 NS1 NS0 SelALUB1 ALUOp2 FuentePC2
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
Control microprogramado
Lógica de control
PLA y/ó ROM
Salidas Entradas Código de operación Bits [31-26] del registro de instrucción Registro de estado CtrlDir Sumador 1 4 FuentePC (2) ALUop (2) SelALUA SelALUB (2) EscrReg RegDest EscrPC cond EscrPC IoD LeerMem EscrMem Mem2Reg EscrIR Selección 6
•
El sumador avanza
secuencialmente por los
estados
• No en todos los casos se
pasa al estado siguiente:
• CtrlDir
• Selecció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
PLA y/ó ROM
Entradas Código de operación Bits [31-26] del registro de instrucción Registro de estado CtrlDir Sumador 1 4 MUX 3 2 1 0 Selección Tabla de envío 2 Tabla de envío 1 6 0
• CtrlDir = 0
• Nueva instrucción
• CtrlDir = 1
• Tipo de instrucción
• CtrlDir = 2
• Leer/escribir memoria
• CtrlDir = 3
• Secuencia normal
Secuencia de estados
√
Cada tabla de envío está asociada a un estado del que no tiene un único
estado destino
√
En el caso general crearemos una tabla (ROM/PLA) para cada estado con
múltiples estados-destino
√
En general, en un procesador complejo, los estados se seleccionarán de
forma secuencial con pocas excepciones
Tipo de
instrucción
Tabla 1
Tabla2
lw
2
3
sw
2
5
aritmético-lógica
6
beq
8
jump
9
Formato de la microinstrucción
Etiqueta
Control
ALU
Fuente
1
Fuente
2
Control
Regs
Memoria
Control
EscrPC
Secuencia
Inicio
Sumar
PC
4
Leer PC
ALU
Siguiente
Sumar
PC
ExtShft
Leer
Tabla 1
Mem1
Sumar
A
Extend
Tabla 2
LW2
Leer ALU
Siguiente
Escr Mem
Ir a 0
SW2
Escr ALU
Ir a 0
Aritmetico1
Función
A
B
Siguiente
Escr ALU
Ir a 0
beq1
Restar
A
B
Cond. ALU
Ir a 0
Procesamiento de excepciones
Una excepción es un suceso inesperado que se produce en el
procesador, por ejemplo el desbordamiento aritmético
Una interrupción es un suceso que provoca un cambio inesperado,
pero se produce externamente al procesador
Ejemplos de implementación de excepciones:
√
Instrucción indefinida
√
Desbordamiento aritmético
Acciones a realizar:
√
Guardar la dirección de la instrucción causante en el registro contador
de programa de la excepción (EPC)
√
Transferir el control al sistema operativo en alguna dirección específica
√
El sistema operativo ejecuta una rutina específica
√
Finalizar el programa o continuar con su ejecución, usando EPC para
Procesamiento de excepciones
Ejemplo de implementación:
√
Saltaremos a la dirección 0xC0000000
√
Necesitamos lo siguientes registros
Un registro de 32 bits para el EPC
Un registro de 1 bit para el Registro de Causa
√
Y las señales de control
Escribir en EPC
Escribir en Registro de Causa
Tipo de excepción (1 bit)
Procesamiento de excepciones
Camino de datos con los elementos necesarios para el
procesamiento de excepciones:
SelALUA EscrReg RegDest EscrIR EscrMem LeerMem IoD Control OP [31-26] EscrPC EscrPC Cond Mem2Reg ALUop FuentePC EscrEPC CausaInt EscrCausa SelALUB R E G IS T R O S Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0] M u x 0 1 M u x 0 1 M u x 0 1 M u x 0 1 M u x 0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq. Memoria Instrucciones o datos Dirección Datos P C Instr. [15-0] 26 4 Instr. [15-11] Instrucción [25-0] PC [31-28] 28 16 32 Salto incond. [31-0] C0000000 M u x 0 1 2 3 Cero Resultado ALU ALU Salida ALU EPC Control ALUSelALUA EscrReg RegDest EscrIR EscrMem LeerMem IoD Control OP [31-26] EscrPC EscrPC Cond Mem2Reg ALUop FuentePC EscrEPC CausaInt EscrCausa SelALUB R E G IS T R O S Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura Instrucción [25-21] Registro de instrucción Instrucción [20-16] Instrucción [15-0] M u x 0 1 M u x 0 1 M u x 0 1 M u x 0 1 M u x 0 1 2 3 A B Registro de datos de memoria Exten. signo Desp. 2 bits a la izq. Desp. 2 bits a la izq. Memoria Instrucciones o datos Dirección Datos P C Instr. [15-0] 26 4 Instr. [15-11] Instrucción [25-0] PC [31-28] 28 16 32 Salto incond. [31-0] C0000000 M u x 0 1 2 3 Cero Resultado ALU ALU Salida ALU EPC Control ALU