Tema 4 Procesador: camino de datos y unidad de...
-
Upload
dangkhuong -
Category
Documents
-
view
218 -
download
0
Transcript of Tema 4 Procesador: camino de datos y unidad de...
�
Tema 4Procesador: 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 lasinstrucciones 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 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
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 deinstrucciones
Instrucción
Dirección
Memoria de Datos
Dirección
Datos
Datos
nº de registro
nº de registro
nº de registroRegistrosPC
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 000000010100101101001000001000000x40000004 100101010010101000000000000000000x40000008 000100010100101111111111111110110x4000000C 00000000100001000001000100001010
0x40000004 PC
00000001010010110100100000100000 IR
0x40000000 00000001010010110100100000100000
0x40000008 000100010100101111111111111110110x4000000C 00000000100001000001000100001010
0x40000004 100101010010101000000000000000000x40000004 PC
1001010100101010000000000000000 IR
0x40000000 000000010100101101001000001000000x40000004 100101010010101000000000000000000x40000008 000100010100101111111111111110110x4000000C 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 deinstrucciones
Instrucción
DirecciónPC
Sumador4
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. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
RE
GIS
TRO
S
3 Operación de la ALU
Cero
Resultadode 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 aescribir
Datoleído
Instrucción
16 32
3 Operación de la ALU
EscribirReg
LeerMem
EscribirMemReg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
RE
GIS
TRO
S
CeroResultadode la ALU
ALU
Extensiónde 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. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
RE
GIS
TRO
S
3 Operación de la ALU
Cero
ALU
Extensiónde signo
Desp.2 bits ala izq.
ResultadoSumador
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
FuenteALU
Mem2reg
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
RE
GIS
TRO
S
Memoria de Datos
Dirección
Dato aescribir
Datoleído
3 Operación de la ALU
LeerMem
EscribirMem
Cero
Resultadode la ALU
ALU
Extensiónde signo
Mux
Mux
Aritmética + Acceso a Memoria
�
Diseño de un camino de datos sencillo
16 32
EscribirReg
FuenteALU
Mem2reg
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
RE
GIS
TRO
S
Memoria de Datos
Dirección
Dato aescribir
Datoleído
3 Operación de la ALU
LeerMem
EscribirMem
Cero
Resultadode la ALU
ALU
Extensiónde signo
Mux
Mux
Memoria deinstrucciones
Instrucción
Direcciónde lecturaP
C
Sumador4
Incorporamos gestión de PC
Diseño de un camino de datos sencillo
16 32
EscribirReg
FuenteALU
Mem2reg
Origen del PC
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
RE
GIS
TRO
S
Memoria de Datos
Dirección
Dato aescribir
Datoleído
3 Operación de la ALU
LeerMem
EscribirMem
CeroResultadode la ALU
ALU
Extensiónde signo
Mux
Mux
Mux
Memoria deinstrucciones
Instrucción
Direcciónde lecturaP
C
Sumador4
Desp.2 bits ala izq.
Resultado
Sumador
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� Activación de las líneas determinada por el código de operación:
��
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� Pasos en la realización de una instrucción tipo R (II):
��
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� Pasos en la realización de una instrucción tipo R (IV):
��
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� Pasos en la realización de una instrucción lw (II):
��
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� Pasos en la realización de una instrucción lw (IV):
��
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� Pasos en la realización de una instrucción sw (I):
��
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� Pasos en la realización de una instrucción sw (III):
��
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� Pasos en la realización de una instrucción beq (I):
�
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� Pasos en la realización de una instrucción beq (III):
�
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:
0110Op5
1000ALUOp0
0001ALUOp1
1000Branch
0100MemWrite
0010MemRead
0011RegWrite
XX10MemtoReg
0110ALUSrc
XX01RegDest
0110Op0
0110Op1
1000Op2
0100Op3
0000Op4
beqSwLwFormato Rseñal
entra
das
salid
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 delongitud variable (cada instrucción tarda únicamente lo necesario)
��
Cálculo del ciclo de reloj
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
RE
GIS
TRO
SCero
Resultadode la ALU
ALU
Extensiónde signo
Control
Mux
Mux
Memoria deinstrucciones
Instrucción
Direcciónde lectura
PC
Sumador4
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Inst. [25-21]
Inst. [20-16]
Inst. [15-11]
Inst. [31-26]
Inst. [25-0]
26 28Dirección de jump. [31-0]
PC + 4 [31-28]
16 32Controlde laALU
Resultado
Sumador
Inst. [15-0]
Inst. [5-0]
Memoria de Datos
Dirección
Dato aescribir
Datoleído
Mux
Mux
Mux
EscribirReg
SaltoIncondRegDest
Fuente ALU
Salt Cond
ALUop
Mem2regLeerMem
EscribirMem
1 ns1 ns2 ns2 ns2 ns2 ns
2 ns2 ns
2 ns2 ns2 ns2 ns
Cálculo del ciclo de reloj
2
5
7
8
6
ns
Cargar instrucciónJump
ALULectura de registros
Cargar instrucción
Salto condicional
Escritura en memoriaALULectura de
registrosCargar instrucciónsw
Escritura de registros
Lectura memoriaALULectura de
registrosCargar instrucciónlw
Escritura de registrosALULectura de
registrosCargar instrucciónAritmética
Unidades funcionales utilizadas por cada tipo de instrucciónTipo de instrucción
��
Evaluación del rendimiento
Tiempo medio ejecución para monociclo: 8 nsTiempo 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. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
RE
GIS
TRO
S
Cero
Resultadode la ALU
ALU
Extensiónde signo
Control
Mux
Mux
Memoria deinstrucciones
Instrucción
Direcciónde lectura
PC
Sumador4
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Inst. [25-21]
Inst. [20-16]
Inst. [15-11]
Inst. [31-26]
Inst. [25-0]
26 28Dirección de jump. [31-0]
PC + 4 [31-28]
16 32Controlde laALU
Resultado
Sumador
Inst. [15-0]
Inst. [5-0]
Memoria de Datos
Dirección
Dato aescribir
Datoleído
Mux
Mux
Mux
��
Reducción de costes
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
RE
GIS
TRO
SCero
Resultadode la ALU
ALU
Extensiónde signo
Control
Mux
Mux
Memoria deinstrucciones
Instrucción
Direcciónde lectura
PC
Sumador4
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Inst. [25-21]
Inst. [20-16]
Inst. [15-11]
Inst. [31-26]
Inst. [25-0]
26 28Dirección de jump. [31-0]
PC + 4 [31-28]
16 32Controlde laALU
Resultado
Sumador
Inst. [15-0]
Inst. [5-0]
Memoria de Datos
Dirección
Dato aescribir
Datoleído
Mux
Mux
Mux
Implementació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. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
RE
GIS
TRO
SMemoria
Instruccioneso datos
Dirección
Resgistro de datos dememoria
Registro deinstrucciones
ALU
A
BDato
SalidaALU
PC
Sin coste adicional
Implementación multiciclo
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
��
Carga de una instrucción
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
IR=Memoria[PC]PC=PC+4
Instrucciones Aritmético-Lógicas: Búsqueda de registros
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
A=Reg[IR[25-21]]B=Reg[IR[20-16]]
��
Instrucciones Aritmético-Lógicas: Ejecución
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
ALUOut = A op B
Instrucciones Aritmético-Lógicas: Guarda resultados en registro
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
Reg[IR[15-11]]=ALUOut
��
Instrucción lw: Búsqueda de registros
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
A=Reg[IR[25-21]]B=Reg[IR[20-16]]
Instrucción lw: Cálculo de la dirección
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
ALUOut = A + signo extendido (IR[15-0])
�
Instrucción lw: Lectura de memoria
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
MDR=Memoria[ALUOut]
Instrucción lw: Guarda dato en registro
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
Reg[IR[20-16]] = MDR
�
Instrucción sw: Búsqueda de registros
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
A=Reg[IR[25-21]]B=Reg[IR[20-16]]
Instrucción sw: Cálculo de la dirección
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
ALUOut = A + signo extendido (IR[15-0])
��
Instrucción sw: Escritura en memoria
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
Memoria[ALUOut] = B
Instrucción beq: Búsqueda de registros
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
A=Reg[IR[25-21]]B=Reg[IR[20-16]]
ALUOut = PC + (signo extendido (IR[15-0]) << 2)
��
Instrucción beq: Comprobación con éxito
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
����
If (A==B) PC = ALUOut
Instrucción beq: Comprobación sin éxito
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
����
��
Instrucción Jump: Ejecución del salto
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
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
32Jump
318Salto condicional
412sw
524lw
444Aritmética
%Tipo de instrucción
Diseño de la unidad de control
� Realización multiciclo: señales de control
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
SelALUAEscrRegRegDestEscrIREscrMemLeerMem
IoD
EscribirPC
Mem2Reg
ControlALU
ALUop
FuentePCSelALUB
��
Diseño de la unidad de control� Realización multiciclo: señales de control
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
SelALUAEscrRegRegDestEscrIR
EscrMemLeerMem
IoD
Control
OP[31-26]
EscrPCEscrPC Cond
Mem2Reg
ControlALU
ALUopFuentePC
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
Cargade
instrucción
Decodificarinstrucciones
CargarRegistros
Aritmético-lógicas
beq jump
��
Estado 0. Cargar Instrucción
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registrode datos dememoria Exten.
signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
SelALUAEscrRegRegDestEscrIR
EscrMemLeerMem
IoD
Control
OP[31-26]
EscrPCEscrPC Cond
Mem2Reg
ControlALU
ALUopFuentePC
SelALUB
Estado 0
Inicio
LeerMemSelALUA = 0
IoD = 0EscrIREscrPC
FuentePC = 00
selALUB = 01ALUOp = 00
A Estado 1
Estado 1. Decodificación
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
16
26
32
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
Saltoincond. [31-0]28
Mux
0
1
2
Cero
ResultadoALU
ALU
SalidaALU
SelALUAEscrRegRegDestEscrIR
EscrMemLeerMem
IoD
Control
OP[31-26]
EscrPCEscrPC Cond
Mem2Reg
ControlALU
ALUopFuentePC
SelALUB
Estado 1
De Estado 0 SelALUA = 0selALUB = 11ALUOp = 00
Estado ?
��
Control del acceso a memoriaDe Estado 1
Estado 4
Estado 5
Acceso a memoria
Acceso a memor ia
(Op = “LW”) o (Op = “SW”)
(Op = “LW”) (Op = “SW”)
Cálculodirección de memoria
Etapa de escritura
Estado 3
Estado 2
Vuelta al Estado 0
SelALUA = 1selALUB = 10ALUOp = 00
LeerMemIoD = 1
EscrMemI0D = 1
EscrRegMem2Reg = 1RegDest = 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 = 1selALUB = 00ALUOp = 10
RegDest = 1EscrReg
Mem2Reg
�
Control de beq
De Estado 1
(Op = “beq”)
Finalización de salto condicional
Estado 8
Vuelta al Estado 0
SelALUA = 1selALUB = 00ALUOp = 01EscrPCCond
FuentePC = 01
Control de jump
De Estado 1
(Op = “j”)
Finalización de jump
Estado 9
Vuelta al Estado 0
EscrPCCondFuentePC = 10
�
Máquina de estados completa
Estado 0
Inicio
LeerMemSelALUA = 0
IoD = 0EscrIREscrPC
FuentePC = 00
selALUB = 01ALUOp = 00
Estado 1
SelALUA = 0selALUB = 11ALUOp = 00
(Op = “LW”) o (Op = “SW”)
Estado 4
Estado 5
Acceso a memoria
Acceso a memoria
(Op = “LW”) (Op = “SW”)
Cálculodirección de memoria
Etapa de escritura
Estado 3
Estado 2
SelALUA = 1selALUB = 10ALUOp = 00
LeerMemIoD = 1
EscrMemI0D = 1
EscrRegMem2Reg = 1RegDest = 0
Finalización de la operación
(Op
= Ar
itmét
ico-ló
gica
)
Ejecución de la operación
(Op = “beq”)
Finalización de salto condicional
Estado 8
SelALUA = 1selALUB = 00ALUOp = 01EscrPCCond
FuentePC = 01
(Op = “j”)
Finalización de jump Estado 9
EscrPCCondFuentePC = 10
(Op = “LW”)
Estado 7
Estado 6
SelALUA = 1selALUB = 00ALUOp = 10
RegDest = 1EscrReg
Mem2Reg
Implementación física
Lógica de control
Salidas
Código de operación desde
el registro deinstrucción
Señales de controlpara el camino de datos
Entradas
Registro de estado
4Estado
6Código de operación
16Señales de control
BitsConcepto
��
ROM
Lógica de control
PLA y/ó ROM
Salidas
Entradas
Código de operaciónBits [31-26] del
registro de instrucción
Registro de estado
FuentePC (2)ALUop (2)SelALUASelALUB (2)EscrRegRegDestEscrPC condEscrPCIoDLeerMemEscrMemMem2RegEscrIR
ROM única
2 palabras de 20 bits
= 20480 bits
10
Código de operación desde
el registro deinstrucción
Estado Nuevoestado
Señales de control
ROM 1
2 palabras de 16 bits
= 256 bits
4EstadoSeñales de control
ROM 2
2 palabras de 4 bits
= 4096 bits
10
Código de operación desde
el registro deinstrucción
Estado
Nuevoestado
64 Veces, una para cada posible valor de los
6 bits de mayor pesode la dirección
PLA
Lógica de control
PLA y/ó ROM
Salidas
Entradas
Código de operaciónBits [31-26] del
registro de instrucción
Registro de estado
FuentePC (2)ALUop (2)SelALUASelALUB (2)EscrRegRegDestEscrPC condEscrPCIoDLeerMemEscrMemMem2RegEscrIR
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
IoD
IEscrIR
LeerMemEscrMem
EscrPCEscrPC cond
Mem2RegFuentePC1
ALUOp1
SelALUB0SelALUAEscrRegRegDestNS3NS2NS1NS0
SelALUB1ALUOp2
FuentePC2
��
Control microprogramado
� Cada grupo de señales causa la ejecución de una operación básicaespecí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 unaPLA, por lo que pueden asignarse direcciones a las microinstrucciones.
Control microprogramado
Lógica de control
PLA y/ó ROM
Salidas
Entradas
Código de operaciónBits [31-26] del
registro de instrucción
Registro de estado
CtrlDir
Sumador
14
FuentePC (2)ALUop (2)SelALUASelALUB (2)EscrRegRegDestEscrPC condEscrPCIoDLeerMemEscrMemMem2RegEscrIR
Selección6
• 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ónBits [31-26] del
registro de instrucción
Registro de estado
CtrlDir
Sumador
14
MUX3 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
Fuente1
B
B
Extend
ExtShft
4
Fuente2
Restar
Función
Sumar
Sumar
Sumar
ControlALU
Escr ALU
Escr Mem
Leer
ControlRegs
Escr ALU
Leer ALU
Leer PC
Memoria
Ir a 0Cond. ALUbeq1
Ir a 0dir. jumpjump1
Ir a 0
SiguienteAritmetico1
Ir a 0SW2
Ir a 0
SiguienteLW2
Tabla 2Mem1
Tabla 1
SiguienteALUInicio
SecuenciaControlEscrPC
Etiqueta
Traducción de un microprograma a circuitos
Cada campo del microcódigose traduce en un conjunto de señales de control que deben activarse
��
Traducción de un microprograma a circuitos
Mem1sw101011
Mem1lw100011
BEQ1beq000100
JUMP1J000010
Rformat1lw000000
ValorNombre
del código de
operación
Campo del código de operación
SW2sw101011
LW2lw100011
ValorNombre
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 formasimbólica y usando las etiquetas del microprograma
Contenido de la memoria de control
��
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 0000Instrucción indefenida
0xC000 0020Desbordamiento arimético
Dirección del vector de excepcionesTipo 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:
SelALUAEscrRegRegDestEscrIR
EscrMemLeerMem
IoD
Control
OP[31-26]
EscrPCEscrPC Cond
Mem2Reg
ALUopFuentePCEscrEPC
CausaIntEscrCausa
SelALUB
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
26
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
28
16 32
Saltoincond. [31-0]
C0000000
Mux
0
1
2
3
Cero
ResultadoALU
ALU
SalidaALU EPC
ControlALU
��
SelALUAEscrRegRegDestEscrIR
EscrMemLeerMem
IoD
Control
OP[31-26]
EscrPCEscrPC Cond
Mem2Reg
ALUopFuentePCEscrEPC
CausaIntEscrCausa
SelALUB
RE
GIS
TRO
S
Reg. delectura 1
Dato a escribir
Datoleído 1
Datoleído 2
Reg. delectura 2
Reg. deescritura
Instrucción[25-21]
Registro de instrucción
Instrucción[20-16]
Instrucción[15-0]
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
Mux
0
1
2
3
A
B
Registro de datos de
memoria Exten.signo
Desp.2 bits ala izq.
Desp.2 bits ala izq.
Memoria
Instruccioneso datos
Dirección
Datos
PC
Instr.[15-0]
26
4
Instr.[15-11]
Instrucción [25-0]
PC [31-28]
28
16 32
Saltoincond. [31-0]
C0000000
Mux
0
1
2
3
Cero
ResultadoALU
ALU
SalidaALU EPC
ControlALU
Procesamiento de excepciones
Procesamiento de excepciones
Estado 0
Inicio
LeerMemSelALUA = 0
IoD = 0EscrIREscrPC
FuentePC = 00
selALUB = 01ALUOp = 00
Estado 1
SelALUA = 0selALUB = 11ALUOp = 00
(Op = “LW”) o (Op = “SW”)
Estado 4
Estado 5
Acceso a memoria
Acceso a memoria
(Op = “LW”) (Op = “SW”)
Cálculodirección de memoria
Etapa de escritura
Estado 3
Estado 2
SelALUA = 1selALUB = 10ALUOp = 00
LeerMemIoD = 1
EscrMemI0D = 1
EscrRegMem2Reg = 1RegDest = 0
Finalización de la operación
(Op
= Ar
itm-L
ógica
s)
Ejecución de la operac ión
(Op = “beq”)
Finalización de salto condicional
Estado 8
SelALUA = 1selALUB = 0 0ALUOp = 01EscrPCCond
FuentePC = 01
(Op = “j”)(Op = otros) Estado 9
EscrPCCondFuentePC = 10
(Op = “LW”)
Estado 7
Estado 6
SelALUA = 1selALUB = 00ALUOp = 10
RegDest = 1EscrReg
Mem2Reg
Estado 10CausaInt=0EscrCausa
SelALUA = 0
EscrPCFuentePC = 11
selALUB = 01ALUOp = 01
EscrEPC
Estado 11CausaInt=1EscrCausa
SelALUA = 0
EscrPCFuentePC = 11
selALUB = 01ALUOp = 01
EscrEPCDesbordamiento
Finalización de jump