Está en la página 1de 48
Tema 4 Procesador: camino de datos y unidad de control
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

Procesamiento de excepciones

Introducción

En este tema se estudia la Unidad Central de Procesamiento (CPU)

Camino de datos:

 

Es la sección del computador encargada de manipular y transformar los datos procedentes de la memoria o los registros internos, para obtener los resultados Su labor es soportar el conjunto de operaciones que precisan las instrucciones del repertorio que es capas de interpretar la unidad de control

 

Unidad de control:

 

Es la sección del computador encargada de interpretar las instrucciones del programa y gobernar la ejecución de las mismas

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)

internos, algunos de los más importantes: 1. El contador de programa (PC) 2. El registro de

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
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
Datos
Registros
PC
Dirección
nº de registro
ALU
Dirección
Instrucción
nº de registro
Memoria de
Memoria
instrucciones
nº de registro
de Datos
Datos

Estructura básica de un procesador

Metodología de sincronización

Las unidades funcionales se clasifican en dos tipos:

combinacionales y secuenciales La metodología de sincronización define cuándo pueden leerse y

escribirse la diferentes señales Asumimos sincronización por flancos

Estado 1 Lógica combinatoria
Estado 1
Lógica combinatoria
Estado 2
Estado 2
la diferentes señales Asumimos sincronización por flancos Estado 1 Lógica combinatoria Estado 2 Ciclo de reloj
la diferentes señales Asumimos sincronización por flancos Estado 1 Lógica combinatoria Estado 2 Ciclo de reloj
la diferentes señales Asumimos sincronización por flancos Estado 1 Lógica combinatoria Estado 2 Ciclo de reloj
la diferentes señales Asumimos sincronización por flancos Estado 1 Lógica combinatoria Estado 2 Ciclo de reloj

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
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
El ciclo de instrucción
Para el subconjunto de instrucciones MIPS, los dos primeros pasos son
idénticos:
Usar el contenido del PC para cargar, desde la memoria que contiene el
código, la siguiente instrucción
Leer uno o dos registros, utilizando para ello los campos de la instrucción
específicos para seleccionarlos
Memoria
Procesador
0x40000000
00000001010010110100100000100000
0x40000004
PC
0x40000004
10010101001010100000000000000000
0x40000008
00010001010010111111111111111011
00000001010010110100100000100000
IR
0x4000000C
00000000100001000001000100001010
0x40000000
00000001010010110100100000100000
0x40000004
PC
0x40000004
10010101001010100000000000000000
0x40000008
00010001010010111111111111111011
1001010100101010000000000000000
IR
0x4000000C
00000000100001000001000100001010
0x40000000
00000001010010110100100000100000
0x40000008
PC
0x40000004
10010101001010100000000000000000
0x40000008
00010001010010111111111111111011
1001010100101010000000000000000
IR
0x4000000C
00000000100001000001000100001010

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

Sumador 4 PC Dirección Instrucción Memoria de instrucciones
Sumador
4
PC
Dirección
Instrucción
Memoria de
instrucciones

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
Involucran tres registros: dos de lectura y uno de
escritura
Usan la ALU para realizar las operaciones
3
Reg. de
Operación de la ALU
lectura 1
Instrucción
Dato
Reg. de
ALU
leído 1
lectura 2
Cero
Reg. de
escritura
Dato
Resultado
de la ALU
leído 2
Dato a
escribir
EscribirReg
REGISTROS

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

3 Operación de la ALU Reg. de lectura 1 EscribirMem Instrucción Dato ALU Reg. de
3
Operación de la ALU
Reg. de
lectura 1
EscribirMem
Instrucción
Dato
ALU
Reg. de
leído 1
Cero
lectura 2
Resultado
Reg. de
Dato
Dirección
de la ALU
escritura
Dato
leído
leído 2
Memoria
Dato a
de Datos
escribir
EscribirReg
Dato a
escribir
16
32
Extensión
de signo
LeerMem
REGISTROS

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

PC +4 del camino de datos de instrucciones Resultado Destino salto Sumador Desp. 2 bits
PC +4 del camino de datos de instrucciones
Resultado
Destino salto
Sumador
Desp.
2 bits a
la izq.
3
Operación de la ALU
Reg. de
lectura 1
Instrucción
Dato
Reg. de
leído 1
lectura 2
Decidir si se
Cero
Reg. de
hace el salto
escritura
Dato
ALU
leído 2
Dato a
escribir
EscribirReg
16
32
Extensión
de signo
REGISTROS

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

Aritmética + Acceso a Memoria

3 Reg. de Operación de la ALU lectura 1 Instrucción EscribirMem Dato Reg. de ALU
3
Reg. de
Operación de la ALU
lectura 1
Instrucción
EscribirMem
Dato
Reg. de
ALU
leído 1
Mem2reg
lectura 2
Cero
Fuente
Reg. de
ALU
Resultado
Dato
Dirección
M
escritura
Dato
de la ALU
leído
M
u
leído 2
Dato a
Memoria
u
x
escribir
de Datos
x
EscribirReg
Dato a
escribir
16
32
Extensión
de signo
LeerMem
REGISTROS

Diseño de un camino de datos sencillo

Incorporamos gestión de PC

Sumador 4 Dirección 3 Reg. de Operación de la ALU de lectura lectura 1 P
Sumador
4
Dirección
3
Reg. de
Operación de la ALU
de lectura
lectura 1
P
EscribirMem
Dato
Instrucción
ALU
C
Reg. de
leído 1
Mem2reg
lectura 2
Cero
Fuente
Memoria de
Reg. de
ALU
Resultado
Dato
instrucciones
Dirección
M
escritura
Dato
de la ALU
leído
M
u
leído 2
Dato a
Memoria
u
x
escribir
de Datos
x
EscribirReg
Dato a
escribir
16
32
Extensión
de signo
LeerMem
REGISTROS

Diseño de un camino de datos sencillo

Añadimos saltos condicionales

Origen del PC M u Sumador x 4 Resultado Desp. 2 bits a la izq.
Origen del PC
M
u
Sumador
x
4
Resultado
Desp.
2 bits a
la izq.
Sumador
Dirección
Reg. de
3
Operación de la ALU
de lectura
lectura 1
P
EscribirMem
Dato
Instrucción
ALU
C
Reg. de
leído 1
Mem2reg
lectura 2
Cero
Fu
ente
Memoria de
Reg. de
ALU
Resultado
Dato
instrucciones
Dirección
M
escritura
Dato
de la ALU
leído
M
u
leído 2
Dato a
Memoria
u
x
escribir
de Datos
x
EscribirReg
Dato a
escribir
16
32
Extensión
de signo
LeerMem
REGISTROS

Diseño de la unidad de control

Realización monociclo: señales de control

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 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 (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 (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 (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 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 (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 (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 (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 (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 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 (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 (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 (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 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 (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 (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 (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 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:

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

ALUOp1 1 0 0 0 ALUOp0 0 0 0 1 Ejercicio: Mapas de Karnaugh Implementación

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 necesario)

Cálculo del ciclo de reloj Inst. [25-0] Desp. 2 bits a Dirección de jump. [31-0]
Cálculo del ciclo de reloj
Inst. [25-0]
Desp.
2 bits a
Dirección de jump. [31-0]
26
la izq.
28
M
u
M
22 nnss
PC + 4 [31-28]
x
u
Sumador
x
RegDest
4
Resultado
SaltoIncond
22 nnss
Salt Cond
Sumador
LeerMem
Inst. [31-26]
Mem2reg
Desp.
2 bits a
la izq.
Control
EscribirMem
Fuente ALU
Dirección
ALUop
de lectura
EscribirReg
Inst. [25-21]
Reg. de
lectura 1
P
Dato
Instrucción
Inst. [20-16]
ALU
C
22 nnss
Reg. de
leído 1
11 nnss
lectura 2
Cero
Memoria de
M
Reg. de
22 nnss
Resultado
instrucciones
Dato
Dirección
M
u
escritura
Dato
de la ALU
Inst. [15-11]
leído
M
u
x
leído 2
Dato a
22 nnss
Memoria
u
x
escribir
de Datos
x
Dato a
escribir
32
Inst. [15-0]
16 Extensión
Control
de signo
de la
ALU
Inst. [5-0]
REGISTROS

Cálculo del ciclo de reloj

Tipo de

Unidades funcionales utilizadas por cada tipo de instrucción

 

instrucción

ns

Aritmética

Cargar

Lectura de

ALU

Escritura de

 

6

instrucción

registros

registros

lw

Cargar

Lectura de

ALU

Lectura

Escritura de

8

instrucción

registros

memoria

registros

sw

Cargar

Lectura de

ALU

Escritura en

 

7

instrucción

registros

memoria

Salto

Cargar

Lectura de

ALU

   

5

condicional

instrucción

registros

Jump

Cargar

       

2

instrucción

Evaluación del rendimiento

Aritméticas: 44%

lw: 24%

sw: 12%

Saltos condicionales: 18%

Jump: 2%

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

medio ejecución ideal: 6 x 44% + 8 x 24% + 7 x 12% + 5

Rendimiento relativo: 8 / 6.3 = 1.27

Reducción de costes

Inst. [25-0] Desp. 2 bits a Dirección de jump. [31-0] 26 la izq. 28 M
Inst. [25-0]
Desp.
2 bits a
Dirección de jump. [31-0]
26
la izq.
28
M
u
M
PC + 4 [31-28]
x
u
Sumador
x
4
Resultado
Desp.
Sumador
Inst. [31-26]
2 bits a
la izq.
Control
Dirección
de lectura
Inst. [25-21]
Reg. de
lectura 1
P
Dato
Instrucción
Inst. [20-16]
ALU
C
Reg. de
leído 1
lectura 2
Cero
Memoria de
M
Reg. de
Resultado
Dato
instrucciones
Dirección
M
u
escritura
Dato
de la ALU
Inst. [15-11]
leído
M
u
x
leído 2
Dato a
Memoria
u
x
escribir
de Datos
x
Dato a
escribir
16
32
Inst. [15-0]
Extensión
Control
de signo
de la
ALU
Inst. [5-0]
REGISTROS

Reducción de costes

Inst. [25-0] Desp. 2 bits a Dirección de jump. [31-0] 26 la izq. 28 M
Inst. [25-0]
Desp.
2 bits a
Dirección de jump. [31-0]
26
la izq.
28
M
u
M
PC + 4 [31-28]
x
u
Sumador
x
4
Resultado
Desp.
Sumador
Inst. [31-26]
2 bits a
la izq.
Control
Dirección
de lectura
Inst. [25-21]
Reg. de
lectura 1
P
Dato
Instrucción
Inst. [20-16]
ALU
C
Reg. de
leído 1
lectura 2
Cero
Memoria de
M
Reg. de
Resultado
Dato
instrucciones
Dirección
M
u
escritura
Dato
de la ALU
Inst. [15-11]
leído
M
u
x
leído 2
Dato a
Memoria
u
x
escribir
de Datos
x
Dato a
escribir
16
32
Inst. [15-0]
Extensión
Control
de signo
de la
ALU
Inst. [5-0]
REGISTROS

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

Registro de Reg. de instrucciones lectura 1 Memoria A Dato P Dirección Reg. de leído
Registro de
Reg. de
instrucciones
lectura 1
Memoria
A
Dato
P
Dirección
Reg. de
leído 1
C
lectura 2
Instrucciones
ALU
SalidaALU
o datos
Reg. de
escritura
Dato
Dato
Resgistro de
leído 2
B
Dato a
datos de
escribir
memoria
REGISTROS

Implementación multiciclo

Sin coste adicional 0 M 1 u Salto Desp. 28 x incond. [31-0] Instrucción [25-0]
Sin coste adicional
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2 bits a
la izq.
2
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
A
u
leído 1
Dirección
x
ALU
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o datos
Instr.
[15-0]
u
Salida
escritura
Dato
[15-11]
Resultado
B
0
Datos
x
leído 2
ALU
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Exten.
Desp.
2 bits a
signo
16
32
la izq.
REGISTROS

Carga de una instrucción IR=Memoria[PC] PC=PC+4 0 M 1 u Salto Desp. 28 x incond.
Carga de una instrucción
IR=Memoria[PC]
PC=PC+4
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2
bits a
2
la izq.
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
u
leído 1
Dirección
A ALU
x
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o
datos
Instr.
[15-0]
u
escritura
Dato
Salida
[15-11]
Resultado
B 0
x
leído 2
ALU
Datos
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Desp.
Exten.
2
bits a
signo
16
32
la izq.
REGISTROS
Instrucciones Aritmético-Lógicas: Búsqueda de registros A=Reg[IR[25-21]] B=Reg[IR[20-16]] 0 M 1 u Salto Desp.
Instrucciones Aritmético-Lógicas: Búsqueda
de registros
A=Reg[IR[25-21]]
B=Reg[IR[20-16]]
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2
bits a
2
la izq.
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
A
u
leído 1
Dirección
x
ALU
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o
datos
Instr.
[15-0]
u
Salida
escritura
Dato
[15-11]
Resultado
B
0
leído 2
ALU
Datos
x
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Desp.
Exten.
2
bits a
signo
16
32
la izq.
REGISTROS

Instrucciones Aritmético-Lógicas: Ejecución

ALUOut = A op B
ALUOut = A op B
0 M 1 u Salto Desp. 28 x incond. [31-0] Instrucción [25-0] 26 2 bits
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2
bits a
2
la izq.
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
u
leído 1
Dirección
A ALU
x
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o
datos
Instr.
[15-0]
u
Salida
escritura
Dato
[15-11]
Resultado
B 0
x
ALU
Datos
leído 2
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Desp.
Exten.
2
bits a
signo
16
32
la izq.
REGISTROS

Instrucciones Aritmético-Lógicas: Guarda resultados en registro

Reg[IR[15-11]]=ALUOut

0 M 1 u Salto Desp. 28 x incond. [31-0] Instrucción [25-0] 26 2 bits
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2
bits a
2
la izq.
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
u
leído 1
Dirección
A ALU
x
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o
datos
Instr.
[15-0]
u
escritura
Dato
Salida
[15-11]
Resultado
B 0
Datos
x
leído 2
ALU
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Desp.
Exten.
2
bits a
signo
16
32
la izq.
REGISTROS

Instrucción lw:

Búsqueda de registros A=Reg[IR[25-21]] B=Reg[IR[20-16]] 0 M 1 u Salto Desp. 28 x incond. [31-0]
Búsqueda de registros
A=Reg[IR[25-21]]
B=Reg[IR[20-16]]
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2
bits a
2
la izq.
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
A
u
leído 1
Dirección
x
ALU
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o
datos
Instr.
[15-0]
u
escritura
Dato
Salida
[15-11]
Resultado
B
0
Datos
x
leído 2
ALU
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Desp.
Exten.
2
bits a
signo
16
32
la izq.
REGISTROS

Instrucción lw:

Cálculo de la dirección

ALUOut = A + signo extendido (IR[15-0])

0 M 1 u Salto Desp. 28 x incond. [31-0] Instrucción [25-0] 26 2 bits
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2
bits a
2
la izq.
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
u
leído 1
Dirección
A ALU
x
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o
datos
Instr.
[15-0]
u
Dato
Salida
escritura
[15-11]
Resultado
B 0
Datos
x
leído 2
ALU
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Desp.
Exten.
2
bits a
signo
16
32
la izq.
REGISTROS

Instrucción lw:

Lectura de memoria

MDR=Memoria[ALUOut]

0 M 1 u Salto Desp. 28 x incond. [31-0] Instrucción [25-0] 26 2 bits
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2
bits a
2
la izq.
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
u
leído 1
Dirección
A ALU
x
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o
datos
Instr.
[15-0]
u
escritura
Dato
Salida
[15-11]
Resultado
B 0
x
ALU
Datos
leído 2
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Desp.
Exten.
2
bits a
signo
16
32
la izq.
REGISTROS

Instrucción lw:

Guarda dato en registro

Reg[IR[20-16]] = MDR

0 M 1 u Salto Desp. 28 x incond. [31-0] Instrucción [25-0] 26 2 bits
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2
bits a
2
la izq.
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
u
leído 1
Dirección
A ALU
x
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o
datos
Instr.
[15-0]
u
Salida
escritura
Dato
[15-11]
Resultado
B 0
x
leído 2
ALU
Datos
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Desp.
Exten.
2
bits a
signo
16
32
la izq.
REGISTROS

Instrucción sw:

Búsqueda de registros A=Reg[IR[25-21]] B=Reg[IR[20-16]] 0 M 1 u Salto Desp. 28 x incond. [31-0]
Búsqueda de registros
A=Reg[IR[25-21]]
B=Reg[IR[20-16]]
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2
bits a
2
la izq.
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
A
u
leído 1
Dirección
x
ALU
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o
datos
Instr.
[15-0]
u
escritura
Dato
Salida
[15-11]
Resultado
B
0
Datos
x
leído 2
ALU
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Desp.
Exten.
2
bits a
signo
16
32
la izq.
REGISTROS

Instrucción sw:

Cálculo de la dirección

ALUOut = A + signo extendido (IR[15-0])

0 M 1 u Salto Desp. 28 x incond. [31-0] Instrucción [25-0] 26 2 bits
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2
bits a
2
la izq.
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
u
leído 1
Dirección
A ALU
x
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o
datos
Instr.
[15-0]
u
Dato
Salida
escritura
[15-11]
Resultado
B 0
Datos
x
leído 2
ALU
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Desp.
Exten.
2
bits a
signo
16
32
la izq.
REGISTROS

Instrucción sw:

Escritura en memoria

Memoria[ALUOut] = B

0 M 1 u Salto Desp. 28 x incond. [31-0] Instrucción [25-0] 26 2 bits
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2 bits a
la izq.
2
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
u
leído 1
Dirección
A ALU
x
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o datos
Instr.
[15-0]
u
escritura
Dato
Salida
[15-11]
Resultado
B 0
ALU
Datos
x
leído 2
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Exten.
Desp.
2 bits a
signo
16
32
la izq.
REGISTROS

Instrucción beq:

Búsqueda de registros A=Reg[IR[25-21]] B=Reg[IR[20-16]] ALUOut = PC + (signo extendido (IR[15-0]) << 2) 0
Búsqueda de registros
A=Reg[IR[25-21]]
B=Reg[IR[20-16]]
ALUOut = PC + (signo extendido (IR[15-0]) << 2)
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2 bits a
la izq.
2
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
u
leído 1
Dirección
A ALU
x
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o datos
Instr.
[15-0]
u
escritura
Dato
Salida
[15-11]
Resultado
B 0
Datos
x
leído 2
ALU
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Exten.
Desp.
2 bits a
signo
16
32
la izq.
REGISTROS

Instrucción beq:

Comprobación con éxito

If (A==B) PC = ALUOut

0 M 1 u Salto Desp. 28 x incond. [31-0] Instrucción [25-0] 26 2 bits
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2
bits a
2
la izq.
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
u
leído 1
Dirección
A ALU
x
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o
datos
Instr.
[15-0]
u
escritura
Dato
Salida
[15-11]
Resultado
B 0
x
leído 2
ALU
Datos
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Desp.
Exten.
2
bits a
signo
16
32
la izq.
REGISTROS

Instrucción beq:

Comprobación sin éxito

0 M 1 u Salto Desp. 28 x incond. [31-0] Instrucción [25-0] 26 2 bits
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2
bits a
2
la izq.
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
u
leído 1
Dirección
A ALU
x
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o
datos
Instr.
[15-0]
u
escritura
Dato
Salida
[15-11]
Resultado
B 0
Datos
x
leído 2
ALU
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Desp.
Exten.
2
bits a
signo
16
32
la izq.
REGISTROS

Instrucción Jump:

Ejecución del salto PC = PC[31-28] || (IR[25-0] <<2) 0 M 1 u Salto Desp.
Ejecución del salto
PC = PC[31-28] || (IR[25-0] <<2)
0
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción [25-0]
26
2 bits a
2
la izq.
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
A
u
leído 1
Dirección
x
ALU
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o datos
Instr.
[15-0]
u
Dato
Salida
escritura
[15-11]
Resultado
B
0
x
leído 2
ALU
Datos
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Exten.
Desp.
2 bits a
signo
16
32
la izq.
REGISTROS

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

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

Realización multiciclo: señales de control

Escribir LeerMem EscrMem EscrIR RegDest EscrReg FuentePC SelALUA SelALUB PC 0 IoD Mem2Reg M 1
Escribir
LeerMem
EscrMem
EscrIR
RegDest
EscrReg
FuentePC
SelALUA
SelALUB
PC
0
IoD
Mem2Reg
M
1
u
Salto
Desp.
28
x
incond. [31-0]
Instrucción
[25-0]
26
2 bits a
la izq.
2
PC
[31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
Instrucción
Reg. de
A u
u
leído 1
Dirección
x
ALU
[20-16]
lectura 2
1
x
Cero
Instrucciones
0
1
M
Instrucción
Reg. de
o datos
Instr.
[15-0]
u
Salida
escritura
Dato
[15-11]
Resultado
B 0
Datos
x
leído 2
ALU
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Exten.
Desp.
2 bits a
Control
signo
ALU
16
32
la izq.
ALUop
REGISTROS

Diseño de la unidad de control

Realización multiciclo: señales de control

EscrPC Cond EscrPC FuentePC IoD ALUop LeerMem SelALUB Control EscrMem SelALUA 0 Mem2Reg EscrReg M
EscrPC Cond
EscrPC
FuentePC
IoD
ALUop
LeerMem
SelALUB
Control
EscrMem
SelALUA
0
Mem2Reg
EscrReg
M
OP
1
EscrIR
RegDest
u
[31-26]
Salto
Desp.
28
x
incond. [31-0]
Instrucci
ón [25-0]
26
2 bits a
la izq.
2
PC
[31
-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
Instrucción
Reg. de
A u
u
leído 1
Dirección
x
ALU
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o datos
Instr.
[15-0]
u
Salida
escritura
Dato
[15-11]
Resultado
B 0
Datos
x
leído 2
ALU
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Exten.
Desp.
2 bits a
Control
signo
16
32
la izq.
ALU
REGISTROS

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 Estado 1 Decodificar Inicio Carga instrucciones de Cargar instrucción Registros Acceso a Aritmético-
Estado 0
Estado 1
Decodificar
Inicio
Carga
instrucciones
de
Cargar
instrucción
Registros
Acceso a
Aritmético-
beq
jump
memoria
lógicas

Estado 0. Cargar Instrucción

EscrPC Cond EscrPC FuentePC IoD ALUop LeerMem SelALUB Control EscrMem SelALUA 0 Mem2Reg EscrReg M
EscrPC Cond
EscrPC
FuentePC
IoD
ALUop
LeerMem
SelALUB
Control
EscrMem
SelALUA
0
Mem2Reg
EscrReg
M
OP
1
EscrIR
RegDest
u
[31-26]
Salto
Desp.
x
28
incond. [31-0]
Instrucción [25-0]
26
2 bits a
la izq.
2
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
A
u
leído 1
Dirección
x
ALU
[20-16]
lectura 2
1
x
Cero
Instrucciones
0
1
Estado 0
M
Instrucción
Reg. de
o datos
Instr. Leer
Mem
[15-0]
u
Salida
escritura
Dato
[15-11] SelAL
UA = 0
Resultado
B
0
x
ALU
Datos
leído 2
Registro de
selALUB = 01
1
Dato a
M
ALU
Inicio
A Estado 1
4
1
instrucción
ALUOp
= 00
escribir
u
IoD = 0
0
2
Instr.
M
x
[15-0]
EscrIR
u
3
Registro
EscrPC
x
1
de datos de
memoria
FuentePC =
00
Exten.
Desp.
2 bits a
Control
signo
16
32
ALU
la izq.
SREGI
TROS
Estado 1. Decodificación EscrPC Cond EscrPC FuentePC IoD ALUop LeerMem SelALUB Control EscrMem SelALUA 0
Estado 1. Decodificación
EscrPC Cond
EscrPC
FuentePC
IoD
ALUop
LeerMem
SelALUB
Control
EscrMem
SelALUA
0
Mem2Reg
EscrReg
M
OP
1
EscrIR
RegDest
u
[31-26]
Salto
Desp.
28
x
Instrucci
ón [25-0]
26
incond. [31-0]
2 bits a
la izq.
2
PC [31-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
Instrucción
Reg. de
A u
u
leído 1
Dirección
x
ALU
[20-16]
lectura 2
1
x
Cero
Instrucciones
1
0
M
Instrucción
Reg. de
o datos
Instr.
[15-0]
u
Salida
escritura
Dato
[15-11]
Resultado
B 0
Datos
x
leído 2
ALU
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
In
s tr.
M
x
Estado 1
De Estado 0
[15- 0]
u
3
Registro
x
1
SelALUA = 0
selALUB = 11
ALUOp = 00
Estado ?
de datos de
Desp.
memoria
Exten.
2 bits a
Control
signo
16
32
la izq.
ALU
REGISTROS

Control del acceso a memoria

De Estado 1

(Op = “LW”) o (Op =“SW”) Estado 2 Cálculo SelALUA = 1 selALUB = 10
(Op = “LW”) o (Op =“SW”)
Estado 2
Cálculo
SelALUA = 1
selALUB = 10
ALUOp = 00
dirección de
memoria
(Op = “LW”)
(Op = “SW”)
Estado 5
Estado 3
Acceso a
LeerMem
IoD = 1
EscrMem
I0D = 1
memoria
Acceso a
memoria
Estado 4
Etapa de escritura
EscrReg
Mem2Reg = 1
RegDest = 0
Vuelta al
Estado 0

Control de operaciones aritmético-lógicas

De Estado 1 (Op = Aritmético-lógica) Estado 6 SelALUA = 1 selALUB = 00 ALUOp
De Estado 1
(Op = Aritmético-lógica)
Estado 6
SelALUA = 1
selALUB = 00
ALUOp = 10
Ejecución de la
operación
(Op = “LW”)
Estado 7
RegDest = 1
EscrReg
Finalización de
la operación
Mem2Reg

Vuelta al

Estado 0

Control de beq

De Estado1

(Op = “beq”) Estado 8 SelALUA= 1 Finalización selALUB=00 de saltocondicional ALUOp =01 EscrPCCond FuentePC=01
(Op = “beq”)
Estado 8
SelALUA= 1
Finalización
selALUB=00
de saltocondicional
ALUOp =01
EscrPCCond
FuentePC=01

Vuelta al

Estado 0

Control de jump

De Estado1 (Op= “j”) Estado 9 Finalización EscrPCCond FuentePC = 10 dejump
De Estado1
(Op= “j”)
Estado 9
Finalización
EscrPCCond
FuentePC = 10
dejump

Vuelta al

Estado0

Máquina de estados completa

(Op = “j”) Estado 0 Estado 1 Inicio LeerMem SelALUA = 0 selALUB = 01
(Op = “j”)
Estado 0
Estado 1
Inicio
LeerMem
SelALUA = 0
selALUB = 01
ALUOp = 00
IoD = 0
EscrIR
EscrPC
FuentePC = 00
SelALUA = 0
selALUB = 11
ALUOp = 00
Finalización
de jump
Estado 2
Estado 6
Estado 8
Estado 9
Cálculo
(Op = “beq”)
SelALUA = 1
selALUB = 10
ALUOp = 00
dirección de
Ejecución de la
operación
SelALUA = 1
selALUB = 00
ALUOp = 10
SelALUA = 1
selALUB = 00
ALUOp = 01
EscrPCCond
FuentePC = 01
Finalización
de salto condicional
EscrPCCond
FuentePC = 10
memoria
(Op = “LW”)
(Op = “SW”)
(Op = “LW”)
Estado 5
Estado 3
Estado 7
LeerMem
IoD = 1
EscrMem
I0D = 1
RegDest = 1
EscrReg
Finalización de
la operación
(Op = “LW”) o (Op = “SW”)
Mem2Reg
Acceso a
Acceso a
memoria
memoria
Estado 4
Etapa de escritura
EscrReg
Mem2Reg = 1
RegDest = 0
(Op = Aritmético-lógica)

Implementación física

Señales de control Salidas para el camino de datos Lógica de control Entradas Código de
Señales de control
Salidas
para el
camino de datos
Lógica de control
Entradas
Código de
operación desde
el registro de
instrucción
Registro de estado

Concepto

Bits

Señales de

 

control

16

Código de

6

operación

Estado

4

64 Veces, una para cada posible valor de los 6 bits de mayor peso de
64 Veces, una para
cada posible valor de los
6 bits de mayor peso
de la dirección

ROM

FuentePC (2) ALUop (2) SelALUA SelALUB (2) Código de operación desde el registro de instrucción
FuentePC (2)
ALUop (2)
SelALUA
SelALUB (2)
Código de
operación desde
el registro de
instrucción
EscrReg
Señales
de control
ROM única
RegDest
Salidas
EscrPC cond
2
10 palabras de 20 bits
EscrPC
Lógica de control
= 20480 bits
IoD
LeerMem
Nuevo
Estado
estado
EscrMem
PLA y/ó ROM
Mem2Reg
EscrIR
ROM 1
Señales
Estado
Entradas
de control
2
4 palabras de 16 bits
= 256 bits
Código de operación
Bits [31-26] del
registro de instrucción
Registro de estado
Código de
operación desde
el registro de
instrucción
ROM 2
Nuevo
estado
2
10 palabras de 4 bits
Estado
= 4096 bits
Op5 PLA Op4 Op3 Op2 Op1 FuentePC (2) Op0 ALUop (2) SelALUA S3 SelALUB (2)
Op5
PLA
Op4
Op3
Op2
Op1
FuentePC (2)
Op0
ALUop (2)
SelALUA
S3
SelALUB (2)
EscrReg
S2
RegDest
Salidas
EscrPC cond
EscrPC
S1
Lógica de control
IoD
LeerMem
S0
EscrMem
PLA y/ó ROM
Mem2Reg
EscrIR
EscrPC
EscrPC cond
IoD
LeerMem
Entradas
EscrMem
IEscrIR
Mem2Reg
FuentePC1
FuentePC2
Código de operación
Bits [31-26] del
registro de instrucción
Registro de estado
ALUOp1
ALUOp2
SelALUB1
SelALUB0
SelALUA
EscrReg
RegDest
NS3
NS2
NS1
NS0

Control microprogramado

Cada grupo de señales causa la ejecución de una operación básica

específica: microoperación. La interpretación y ejecución de una instrucción da lugar a una

secuencia de operaciones máquina básicas (microoperaciones), cada una controlada por un grupo de señales de control, microinstrucción. Una secuencia de microinstrucciones constituye un microprograma.

El código de operación de una instrucción máquina, cuando es

decodificado, señala la microrrutina apropiada incluida en la memoria microprogramada. Las microinstrucciones suelen estar ubicadas en una ROM o en una PLA, por lo que pueden asignarse direcciones a las microinstrucciones.

Control microprogramado

FuentePC (2) ALUop (2) SelALUA SelALUB (2) EscrReg RegDest Salidas EscrPC cond EscrPC Lógica de
FuentePC (2)
ALUop (2)
SelALUA
SelALUB (2)
EscrReg
RegDest
Salidas
EscrPC cond
EscrPC
Lógica de control
IoD
LeerMem
PLA y/ó ROM
EscrMem
Mem2Reg
EscrIR
CtrlDir
Entradas
1
4
Registro de estado
Sumador
6
Selección

Código de operación Bits [31-26] del registro de instrucción

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 CtrlDir Entradas 1 4 Registro de estado Sumador 6 MUX 3 2
PLA y/ó ROM
CtrlDir
Entradas
1
4
Registro de estado
Sumador
6
MUX
3
2
1
0
0
Tabla de envío 2
Tabla de envío 1
Selección

Código de operación Bits [31-26] del registro de instrucción

• 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

Etiqueta

Control

Fuente

Fuente

Control

Memoria

Control

Secuencia

ALU

1

2

Regs

EscrPC

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

jump1

         

dir. jump

Ir a 0

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

microprograma a circuitos Cada campo del microcódigo se traduce en un conjunto de señales de control

Traducción de un microprograma a circuitos

Las dos ROMs de envío de microcódigo mostrando el contenido en forma simbólica y usando las etiquetas del microprograma

Campo del

Nombre

 

código de

del código

Valor

operación

de

operación

000000

lw

Rformat1

000010

J

JUMP1

000100

beq

BEQ1

100011

lw

Mem1

101011

sw

Mem1

Tabla 1 de envío de microcódigo

Campo del

Nombre

 

código de

del código

Valor

operación

de

operación

100011

lw

LW2

101011

sw

SW2

Tabla 2 de envío de microcódigo

Contenido de la memoria de control

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,

Tipo de excepción

Dirección del vector de excepciones

Instrucción indefenida

0xC000 0000

Desbordamiento arimético

0xC000 0020

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:

EscrCausa CausaInt EscrPC Cond EscrEPC EscrPC FuentePC IoD ALUop LeerMem SelALUB Control EscrMem SelALUA 0
EscrCausa
CausaInt
EscrPC Cond
EscrEPC
EscrPC
FuentePC
IoD
ALUop
LeerMem
SelALUB
Control
EscrMem
SelALUA
0
Mem2Reg
EscrReg
M
Salto
OP
1
EscrIR
RegDest
Desp.
28
incond. [31-0]
u
[31-26]
Instrucción [25-0]
26
2 bits a
la izq.
2
x
3
C0000000
PC
[31
-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
A
u
leído 1
Dirección
x
ALU
[20-16]
lectura 2
1
x
Cero
Instrucciones
0
1
M
Instrucción
Reg. de
o datos
Instr.
[15-0]
u
Salida
escritura
Dato
[15-11]
Resultado
EPC
B
0
x
leído 2
ALU
Datos
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Exten.
signo
32
Desp.
2 bits a
la izq.
Control
16
ALU
REGISTROS

Procesamiento de excepciones

EscrCausa CausaInt EscrPC Cond EscrEPC EscrPC FuentePC IoD ALUop LeerMem SelALUB Control EscrMem SelALUA 0
EscrCausa
CausaInt
EscrPC Cond
EscrEPC
EscrPC
FuentePC
IoD
ALUop
LeerMem
SelALUB
Control
EscrMem
SelALUA
0
Mem2Reg
EscrReg
M
Salto
OP
1
EscrIR
RegDest
Desp.
28
incond. [31-0]
u
[31-26]
Instrucción [25-0]
26
2 bits a
la izq.
2
x
3
C0000000
PC [31
-28]
Instrucción
Reg. de
0
P
M
[25-21]
lectura 1
0
C
M
Memoria
Dato
u
Instrucción
Reg. de
u
leído 1
Dirección
A ALU
x
[20-16]
lectura 2
1
x
Cero
Instrucciones
0
1
M
Instrucción
Reg. de
o datos
Instr.
[15-0]
u
Salida
escritura
Dato
[15-11]
Resultado
EPC
B 0
x
ALU
Datos
leído 2
Registro de
1
Dato a
M
ALU
4
1
instrucción
escribir
u
0
2
Instr.
M
x
[15-0]
u
3
Registro
de datos de
memoria
x
1
Exten.
Desp.
2 bits a
la izq.
Control
signo
16
32
ALU
REGISTROS

Procesamiento de excepciones

(Op = otros) (Op = “beq”) (Op = “j”) Estado 0 Estado 1 Inicio LeerMem
(Op = otros)
(Op = “beq”)
(Op = “j”)
Estado 0
Estado 1
Inicio
LeerMem
SelALUA = 0
selALUB = 01
ALUOp = 00
IoD = 0
EscrIR
EscrPC
FuentePC = 00
SelALUA = 0
selALUB = 11
ALUOp = 00
Finalización
de jump
Estado 6
Estado 8
Estado 9
Cálculo
SelALUA = 1
selALUB = 10
ALUOp = 00
Ejecución de la
operación
Finalización
de salto condicional
dirección de
EscrPCCond
FuentePC = 10
memoria
SelALUA = 1
selALUB = 00
ALUOp = 10
SelALUA = 1
selALUB = 00
ALUOp = 01
EscrPCCond
FuentePC = 01
(Op = “SW”)
Estado 5
(Op = “LW”)
Finalización de
Estado 7
la operación
(Op = “LW”) o (Op
= “SW”)
Estado 10
Estado 11
LeerMem
IoD = 1
EscrMem
I0D = 1
RegDest = 1
EscrReg
CausaInt=0
CausaInt=1
Mem2Reg
Acceso a
Acceso a
memoria
memoria
Desbordamiento
EscrCausa
SelALUA = 0
selALUB = 01
ALUOp = 01
EscrEPC
EscrPC
FuentePC = 11
EscrCausa
SelALUA = 0
selALUB = 01
ALUOp = 01
EscrEPC
EscrPC
FuentePC = 11
Etapa de escritura
EscrReg
Mem2Reg = 1
RegDest = 0
(Op = Aritm-Lógicas)

Estado 2

(Op = “LW”)

Estado 3

Estado 4