Tema 4
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
Lógica combinatoria
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
Veremos como implementar estas instrucciones
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
TR
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
sw $t0, 32($s0)
101011
10000
01000
0000000000100000
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
TR
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
El PC ya se ha actualizado a PC + 4
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
TR
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
replicarlo
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
TR
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
Aritmética + Acceso a Memoria
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
TR
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 escritura
R
E
G
IS
TR
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
Añadimos saltos condicionales
Diseño de la unidad de control
Realización monociclo: señales de control
Diseño de la unidad de control
Diseño de la unidad de control
Pasos en la realización de una instrucción tipo R (I):
Diseño de la unidad de control
Diseño de la unidad de control
Pasos en la realización de una instrucción tipo R (III):
Diseño de la unidad de control
Diseño de la unidad de control
Pasos en la realización de una instrucción lw (I):
Diseño de la unidad de control
Diseño de la unidad de control
Pasos en la realización de una instrucción lw (III):
Diseño de la unidad de control
Diseño de la unidad de control
Pasos en la realización de una instrucción lw (V):
Diseño de la unidad de control
Diseño de la unidad de control
Pasos en la realización de una instrucción sw (II):
Diseño de la unidad de control
Diseño de la unidad de control
Pasos en la realización de una instrucción sw (IV):
Diseño de la unidad de control
Diseño de la unidad de control
Pasos en la realización de una instrucción beq (II):
Diseño de la unidad de control
Diseño de la unidad de control
Pasos en la realización de una instrucción beq (IV):
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:
0 1 1 0 Op5 1 0 0 0 ALUOp0 0 0 0 1 ALUOp1 1 0 0 0 Branch 0 1 0 0 MemWrite 0 0 1 0 MemRead 0 0 1 1 RegWrite X X 1 0 MemtoReg 0 1 1 0 ALUSrc X X 0 1 RegDest 0 1 1 0 Op0 0 1 1 0 Op1 1 0 0 0 Op2 0 1 0 0 Op3 0 0 0 0 Op4 beq Sw Lw Formato R señal
en
tra
da
s
sa
lid
as
Ejercicio:
Mapas de Karnaugh
Implementación
combinacional
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
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 TR 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
2
5
7
8
6
ns
Cargar
instrucción
Jump
ALU
Lectura de
registros
Cargar
instrucción
Salto
condicional
Escritura en
memoria
ALU
Lectura de
registros
Cargar
instrucción
sw
Escritura de
registros
Lectura
memoria
ALU
Lectura de
registros
Cargar
instrucción
lw
Escritura de
registros
ALU
Lectura de
registros
Cargar
instrucción
Aritmética
Unidades funcionales utilizadas por cada tipo de instrucción
Tipo de
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
Jump: 2%
Saltos condicionales: 18%
sw: 12%
lw: 24%
Aritméticas: 44%
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 TR 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 TR 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
que no se destruya al terminar el ciclo
Esquema multiciclo
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
TR
O
S
Memoria
Instrucciones o datos Dirección Resgistro de datos de memoria Registro de instruccionesALU
A B Dato SalidaALUP
C
Sin coste adicional
Implementación multiciclo
R E G IS TR 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 ALUCarga de una instrucción
R E G IS TR 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 ALUIR=Memoria[PC]
PC=PC+4
Instrucciones Aritmético-Lógicas: Búsqueda
de registros
R E G IS TR 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 ALUA=Reg[IR[25-21]]
B=Reg[IR[20-16]]
Instrucciones Aritmético-Lógicas: Ejecución
R E G IS TR 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 ALUALUOut = A op B
Instrucciones Aritmético-Lógicas: Guarda
resultados en registro
R E G IS TR 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 ALUReg[IR[15-11]]=ALUOut
Instrucción lw:
Búsqueda de registros
R E G IS TR 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 ALUA=Reg[IR[25-21]]
B=Reg[IR[20-16]]
Instrucción lw:
Cálculo de la dirección
R E G IS TR 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 ALUInstrucción lw:
Lectura de memoria
R E G IS TR 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 ALUMDR=Memoria[ALUOut]
Instrucción lw:
Guarda dato en registro
R E G IS TR 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
Reg[IR[20-16]] = MDR
Instrucción sw:
Búsqueda de registros
R E G IS TR 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 ALUA=Reg[IR[25-21]]
B=Reg[IR[20-16]]
Instrucción sw:
Cálculo de la dirección
R E G IS TR 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 ALUInstrucción sw:
Escritura en memoria
R E G IS TR 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 ALUMemoria[ALUOut] = B
Instrucción beq:
Búsqueda de registros
R E G IS TR 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 ALUA=Reg[IR[25-21]]
B=Reg[IR[20-16]]
Instrucción beq:
Comprobación con éxito
R E G IS TR 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
If (A==B) PC = ALUOut
Instrucción beq:
Comprobación sin éxito
R E G IS TR 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
Instrucción Jump:
Ejecución del salto
R E G IS TR 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
PC = PC[31-28] || (IR[25-0] <<2)
CPI 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
4 ciclos = 8 ns
CPI multiciclo
4,04
Multiciclo
3
2
Jump
3
18
Salto condicional
4
12
sw
5
24
lw
4
44
Aritmética
%
Tipo de instrucción
Diseño de la unidad de control
Realización multiciclo: señales de control
R E G IS TR 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 TR 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 LeerMemIoD 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
Después de la última etapa la máquina debe volver al estado inicial
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
Estado 0. Cargar Instrucción
R E G IS TR 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 Estado 0 Inicio LeerMem SelALUA = 0 IoD = 0 EscrIR EscrPC FuentePC = 00 selALUB = 01 ALUOp = 00 A Estado 1Estado 1. Decodificación
R E G IS TR 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 LeerMemIoD 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 memoria (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 MemIoD = 1 EscrMemI0D = 1
EscrReg Mem2R eg = 1
RegDest = 0
Control de operaciones aritmético-lógicas
De Estado 1
Finalización de
la operación
(Op = Aritmético-lógica)
(Op = “LW”)
Ejecución de la
operación
Estado 7
Estado 6
Vuelta al
Estado 0
SelALUA = 1
selALUB = 00
ALUOp = 10
RegDest = 1
EscrRe g
Mem2Reg
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
EscrPCCond
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 (O p = “SW”) Estado 4 Estado 5 Acceso amemoria 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 EscrMemI0D = 1
EscrReg Mem2Reg = 1 RegDest = 0 Finalización de la operación (Op = Ar itmét ico-ló gica ) Ejecución de la operación (O p = “beq ”) 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 Mem2Reg
Implementació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
4
Estado
6
Código de
operación
16
Señales de
control
Bits
Concepto
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
64 Veces, una para cada posible valor de los
6 bits de mayor peso de la dirección
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 S3 S2 S1 S0 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
microinstrucciones.
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
Formato de la microinstrucción
A
A
A
PC
PC
Fuente
1
B
B
Extend
ExtShft
4
Fuente
2
Restar
Función
Sumar
Sumar
Sumar
Control
ALU
Escr ALU
Escr Mem
Leer
Control
Regs
Escr ALU
Leer ALU
Leer PC
Memoria
Ir a 0
Cond. ALU
beq1
Ir a 0
dir. jump
jump1
Ir a 0
Siguiente
Aritmetico1
Ir a 0
SW2
Ir a 0
Siguiente
LW2
Tabla 2
Mem1
Tabla 1
Siguiente
ALU
Inicio
Secuencia
Control
EscrPC
Etiqueta
Traducción de un microprograma a circuitos
Cada campo del microcódigo
se traduce en un conjunto
de señales de control que
deben activarse
Traducción de un microprograma a circuitos
Mem1
sw
101011
Mem1
lw
100011
BEQ1
beq
000100
JUMP1
J
000010
Rformat1
lw
000000
Valor
Nombre
del código
de
operación
Campo del
código de
operación
SW2
sw
101011
LW2
lw
100011
Valor
Nombre
del código
de
operación
Campo del
código de
operación
Tabla 1 de envío de microcódigo
Tabla 2 de envío de microcódigo
Las dos ROMs de envío de microcódigo mostrando el contenido en forma
simbólica y usando las etiquetas del microprograma
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
Métodos para comunicar la causa de una excepción
Registro de estado (denominado registro Causa o
Cause Register
), que
contiene un campo que indica la razón de la excepción. Es el método
utilizado en la arquitectura MIPS. Se utiliza un único punto de entrada al
sistema operativo para toda las excepciones
Interrupciones vectorizadas. La dirección a la que se transfiere el
control viene determinada por la causa de la excepción. Por ejemplo,
0xC000 0000
Instrucción indefenida
0xC000 0020
Desbordamiento arimético
Dirección del vector de excepciones
Tipo de excepción
Procesamiento de excepciones
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
saber dónde retomar la ejecución
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, pues solo consideramos dos tipos
de excepciones)
Procesamiento de excepciones
Camino de datos con los elementos necesarios para el
procesamiento de excepciones:
SelALUA EscrReg RegDest EscrIR EscrMem LeerMemIoD Control OP [31-26] EscrPC EscrPC Cond Mem2Reg ALUop FuentePC EscrEPC CausaInt EscrCausa SelALUB R E G IS TR 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 EscrMemLeerMem IoD Control OP [31-26] EscrPC EscrPC Cond Mem2Reg ALUop FuentePC EscrEPC CausaInt EscrCausa SelALUB R E G IS TR 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
Procesamiento de excepciones
Procesamiento de excepciones
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 = “S W”) Estado 4 Estado 5 Acceso amemoria Acceso a memoria (Op = “LW”) (Op = “SW”) Cálculo dirección de memoria Etapa de escritura Estado 3 Estado 2 SelALUA = 1 selALUB = 1 0 ALUOp = 00 LeerMem
IoD = 1 EscrMemI0D = 1
EscrReg Mem2R eg = 1 RegDest = 0 Finalización de la operación (Op = Ar itm-L ógica s) Ejecución de la operación (O p = “b eq”) Finalización de salto condicional Estado 8 SelALUA = 1 selALUB = 0 0 ALUOp = 01 EscrPCCond FuentePC = 01 (Op = “j”) (Op = o tros) Estado 9 EscrPCCond Fuente PC = 10 (Op = “LW”) Estado 7 Estado 6 SelAL UA = 1 selALUB = 00 ALUOp = 10 RegDest = 1 EscrReg Mem2Reg Estado 10 CausaInt=0 EscrCausa SelALUA = 0 EscrPC FuentePC = 11 selALUB = 01 ALUOp = 01 EscrEPC Estado 11 CausaInt=1 EscrCausa SelALUA = 0 EscrPC FuentePC = 11 selALUB = 01 ALUOp = 01 EscrEPC Desbordamiento Finalización de jump