• No se han encontrado resultados

Tema 4 Procesador: camino de datos y unidad de control

N/A
N/A
Protected

Academic year: 2021

Share "Tema 4 Procesador: camino de datos y unidad de control"

Copied!
48
0
0

Texto completo

(1)

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

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

Memoria de

instrucciones

Instrucción Dirección de lectura

P

C

Sumador 4

Incorporamos 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 ALU

ALU

Extensión de signo

M

u

x

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. Resultado

Sumador

Añadimos saltos condicionales

(11)

Diseño de la unidad de control

Realización monociclo: señales de control

Diseño de la unidad de control

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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 EscribirMem

1 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

(23)

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 x

(24)

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 x

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

(25)

Esquema multiciclo

Reg. de lectura 1 Dato a escribir Dato leído 1 Dato leído 2 Reg. de lectura 2 Reg. de escritura

R

E

G

IS

TR

O

S

Memoria

Instrucciones o datos Dirección Resgistro de datos de memoria Registro de instrucciones

ALU

A B Dato SalidaALU

P

C

Sin coste adicional

Implementación multiciclo

R E G IS 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

(26)

Carga 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 ALU

IR=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 ALU

A=Reg[IR[25-21]]

B=Reg[IR[20-16]]

(27)

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 ALU

ALUOut = 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 ALU

Reg[IR[15-11]]=ALUOut

(28)

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 ALU

A=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 ALU

(29)

Instrucció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 ALU

MDR=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

(30)

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 ALU

A=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 ALU

(31)

Instrucció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 ALU

Memoria[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 ALU

A=Reg[IR[25-21]]

B=Reg[IR[20-16]]

(32)

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

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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 1

Estado 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 SelALUB

Estado 1

De Estado 0

SelALUA = 0 selALUB = 11 ALUOp = 00

Estado ?

(38)

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 Mem

IoD = 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

(39)

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

(40)

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 a

memoria Acceso a memoria (Op = “LW”) (Op = “SW”) Cálculo dirección de memoria Etapa de escritura Estado 3 Estado 2 SelALUA = 1 selALUB = 10 ALUOp = 00 LeerMem

IoD = 1 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

(41)

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 4

Estado 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

(42)

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

(43)

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

(44)

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

(45)

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

(46)

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

(47)

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 ALU

(48)

SelALUA 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 a

memoria Acceso a memoria (Op = “LW”) (Op = “SW”) Cálculo dirección de memoria Etapa de escritura Estado 3 Estado 2 SelALUA = 1 selALUB = 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

Referencias

Documento similar