Procesador. Memoria. Ejemplo de un Procesador: MU0. Instrucciones. Direcciones. Registros. Datos. Instrucciones y datos SETI Tr

SETI-03-04 J.L.Huertas Ejemplo de un Procesador: MU0 Instrucciones Registros Direcciones Datos Procesador Instrucciones y datos Memoria Tr. 30...
48 downloads 0 Views 2MB Size
SETI-03-04

J.L.Huertas

Ejemplo de un Procesador: MU0

Instrucciones

Registros

Direcciones Datos

Procesador Instrucciones y datos

Memoria

Tr. 306

SETI-03-04

J.L.Huertas

float fir_filter(float input, float *coef, int n, float *history { int i; float *hist_ptr, *hist1_ptr, *coef_ptr; float output; hist_ptr = history; hist1_ptr = hist_ptr; /* use for history update */ coef_ptr = coef + n - 1; /* point to last coef */ /*form output accumulation */ output = *hist_ptr++ * (*coef_ptr_); for(i = 2; i < n; i++) { *hist1_ptr++ = *hist_ptr; /* update history array */ output += (*hist_ptr++) * (*coef_ptr-); } output += input * (*coef_ptr); /* input tap */ *hist1_ptr = input; /* last history */ return(output); }

Tr. 307

SETI-03-04

J.L.Huertas

Elementos del MU0

· · ·

Componentes: Un conjunto de dispositivos que configuran la estructura del MU0 Conjunto de Instrucciones: Las operaciones que pueden ejecutarse con la estructura del MU0 Configuración Lógica: La estructura operativa del MU0, formada por dos elementos: w El Camino de Datos w La Lógica de Control

q MU0 tiene 16 bits, con 12 bits de espacio de direcciones: 4 bits cod.op.

12 bits Dirección (S)

Tr. 308

SETI-03-04

J.L.Huertas

Componentes del MU0

· · · · ·

Contador de Programa (PC) Acumulador (ACC) Unidad Aritmético-Lógica (ALU) Registro de Instrucciones (IR) Lógica de control y de decodificación de instrucciones

Tr. 309

SETI-03-04

J.L.Huertas

Instrucciones del MU0

Instrucción

Cod.Oper.

Efecto

LDA S

0000

ACC:=mem16[S]

STO S

0001

mem16[S]:=ACC

ADD S

0010

ACC:=ACC+mem16[S]

SUB S

0011

ACC:=ACC-mem16 [S]

JMP S

0100

PC:=S

JGE S

0101

if ACC > 0 PC:=S

JNE S

0110

if ACC = 0 PC:=S

STP

0111

stop

Tr. 310

SETI-03-04

J.L.Huertas

Tipos de Instrucciones

· · · · ·

Procesamiento de datos (ej. ADD, SUB) Movimiento de datos (copian datos de un lugar de la memoria a otro o de la memoria a los registros del procesador, ej. STO, LDA) Control de flujo (cambia la ejecución de una parte del programa a otra diferente, ej. JMP) Especiales (controlan el estado de ejecución del procesador, ej. STP) Puede haber instrucciones que entren en más de una categoría

Tr. 311

SETI-03-04

J.L.Huertas

Direccionamiento de Instrucciones Toda instrucción precisa: wel nombre de la instrucción wel lugar de memoria donde están los operandos wel lugar de memoria donde debe guardarse el resultado wla dirección de la próxima instrucción a ejecutar Forma “natural” de una instrucción: 4-direcciones q bits

cod.op.

m bits

m bits

m bits

m bits

direcc. op.1 direcc. op.2 direcc. dest. direcc. próx

Ejemplo: ADD d, s1, s2, next_i; d:=s1+s2

Tr. 312

SETI-03-04

J.L.Huertas

Direccionamiento simplificado de Instrucciones Instrucción 3-direcciones: suponiendo que la próxima instr. está en la dirección siguiente q bits m bits m bits m bits cod.op. direcc. op.1 direcc. op.2 direcc. dest. Ejemplo: ADD d, s1, s2, ; d:=s1+s2 Instrucción 2-direcciones: suponiendo que el registro de destino es el mismo que el registro fuente q bits m bits m bits cod.op. direcc. op.1 direcc. dest. Ejemplo: ADD d, s1 ; d:=d+s1 Instrucción 1-dirección: suponiendo implícito el registro de destino q bits m bits cod.op. direcc. op.1 Ejemplo: ADD s1 ; acumulador:=acumulador+s1 Tr. 313

SETI-03-04

J.L.Huertas

Camino de Datos del MU0 Bus de Direcciones

Control Contador de Programa

Registro de Instrucciones Memoria

ALU

Acumulador

Bus de Datos Tr. 314

J.L.Huertas

SETI-03-04

Tr. 315

SETI-03-04

J.L.Huertas

Organización a nivel de Transferencias de Registro del MU0 Reset Ex/ft (execute/fetch)

Memoria

Mux 1

MEMrq IRce IR

RnW

MU0

opcode

0

PC PCce

Asel

ALUfs

B

ALU

ACCoe A

ACCce ACC[15] ACCz Bsel

ACC 0 Mux 1

Tr. 316

SETI-03-04

J.L.Huertas

Unidad de Control del MU0: Comandos de cada Instrucción a

b

c

d α β

γ

δ

ε

φ

η

ϕ κ

λ

Reset

xxxx

1

x

x

x

0

0

1

1

1

0

=0

1

1

0

LDA S

0000

0

0

x

x

1

1

1

0

0

0

=B

1

1

1

0000

0

1

x

x

0

0

0

1

1

0

B+1

1

1

0

0001

0

0

x

x

1

x

0

0

0

1

x

1

0

1

0001

0

1

x

x

0

0

0

1

1

0

B+1

1

1

0

0010

0

0

x

x

1

1

1

0

0

0

A+B

1

1

1

0010

0

1

x

x

0

0

0

1

1

0

B+1

1

1

0

0011

0

0

x

x

1

1

1

0

0

0

A-B

1

1

1

0011

0

1

x

x

0

0

0

1

1

0

B+1

1

1

0

JMP S

0100

0

x

x

x

1

0

0

1

1

0

B+1

1

1

0

JGE S

0101

0

x

x

0

1

0

0

1

1

0

B+1

1

1

0

0101

0

x

x

1

0

0

0

1

1

0

B+1

1

1

0

0110

0

x

0

x

1

0

0

1

1

0

B+1

1

1

0

0110

0

x

1

x

0

0

0

1

1

0

B+1

1

1

0

0111

0

x

x

x

1

x

0

0

0

0

x

0

1

0

STO S

ADD S

SUB S

JNE S

STP

Entradas

Salidas Tr. 317

SETI-03-04

J.L.Huertas

Entradas

Salidas

a

Reset

b

Ex/ft

c

ACCz

d

ACC15

α

Asel

α

Bsel

β

ACCce

γ

PCce

δ

IRce

ε

ACCoe

φ

ALUfs

η

MEMrq

ϕ

RnW

κ

Ex/ft

Tr. 318

SETI-03-04

J.L.Huertas

Evolución Hasta 1980-85: Sólo sistemas CISC q Instruciones muy complejas q Uso de microcódigo en ROM para implementar las operaciones más frecuentes. q Instrucciones de tamaño variable y nuchos formatos diferentes q Valores en memoria pueden ser utilizados directamente como operandos q Cada instrucción requiere muchos ciclos de reloj Desde 1985: Aparecen sistemas RISC q Instruciones más simples Desde 1985: q tamaño fijo (32-b) y pocos formatos distintos q Instruciones Instruciones de más simples q banco de de registros 32-b) y pocos formatos distintos q Un Instruciones tamaño(32 fijode(32-b) q instrucciones que procesan datos operan sólo sobre los registros q Las Un banco de registros (32 de 32-b) q instruccionesque están “separadas” las que a memoria q Estas Las instrucciones procesan datos de operan sóloacceden sobre los registros q Cada instrucción requiere un único ciclo de reloj q Estas instrucciones están “separadas” de las que acceden a memoria q lógica de decodificación se haceciclos con puertas q La Cada instrucción requiere muchos de relojlógicas q Las instrucciones se ejecutan en “pipeline”

Tr. 319

SETI-03-04

J.L.Huertas

Ejecución de Instrucciones

Ejecución de una instrucción típica: 6 pasos fetch

decodif.

registr.

ALU

memor.

result.

ejecución

tiempo 1.- Sacar la instrucción de la memoria 2.- Decodificar para saber de qué instrucción se trata 3.- Acceder a los operandos que puedan ser necesarios desde el banco de registros 4.- Combinar los operandos para formar: a) el resultado b) una dirección de memoria 5.- Acceder a la memoria para obtener un dato-operando 6.- Escribir el resultado en el banco de registros

Tr. 320

SETI-03-04

J.L.Huertas

Pipelining Métodos para acelerar la ejecución de instrucciones: a.- Varios/muchos registros en “pipeline” b.- Caché 3.- Instrucciones super-escalares

fetch

decodif. fetch

registr. decodif. fetch

ALU registr. decodif.

memor.

result.

ALU

memor.

result.

ALU

memor.

registr.

result.

tiempo Tr. 321

SETI-03-04

J.L.Huertas

Pipelining: Conflictos

fetch

fetch

decodif.

fetch

decodif.

registr.

ALU

fetch

decodif.

registr.

registr.

decodif.

ALU

memor.

memor.

result.

ALU

memor.

result.

result.

espera

registr.

ALU

memor.

result.

tiempo Tr. 322

SETI-03-04

J.L.Huertas

Evolución de los Sistemas de Tratamiento de Información

RISC

CISC

SPARC

INTEL

AMD MIPS

ARM LEON Virtex

Tr. 323

SETI-03-04

J.L.Huertas

ALU para ARM6

Registro Oper. A

Registro Oper. B

Puertas XOR

Puertas XOR

Invierte A

Invierte B Cin

Funciones Lógicas Función Selector

Sumador

C V

Mux Resultados Detector de Cero

N Z

Tr. 324

SETI-03-04

J.L.Huertas

Buses y Registros en ARM6 Registro de Direcciones Incrementador Ad

A

B Banco de Registros

PC

Inc Multiplicador W

ALU Desplazador

shift out Data In Tubería de Instrucciones Data Out Din Tr. 325

SETI-03-04

J.L.Huertas

Estructura de Control de ARM6

Coprocesador

Instrucción

Control Multiplicac. PLA Decodif.

Cuenta Ciclo Load/Store

Control Direcciones

Control Registros

Control

ALU

Control Desplazador

Tr. 326

SETI-03-04

J.L.Huertas

Organización a nivel de Transferencias de Registro del MU0

MEMrq IRce

RnW

MU0

opcode

PCce

Asel

ACCoe ALUfs ACCce ACC[15] ACCz Bsel

Tr. 327

SETI-03-04

J.L.Huertas

Organización de ARM con pipeline de 3 etapas

· · · · · · ·

Un banco de registros Un desplazador/rotador (barrel shifter) Una ALU Registro de direcciones e increm. Registros de datos Decodificador de instrucciones Lógica de control Tr. 328

SETI-03-04

J.L.Huertas

Organización de ARM con pipeline de 5 etapas

Tr. 329

J.L.Huertas

SETI-03-04

Actividad de una instrucción de procesamiento de datos

Tr. 330

SETI-03-04

J.L.Huertas

Actividad de una instrucción de almacenamiento

Tr. 331

SETI-03-04

J.L.Huertas

Los dos primeros ciclos de actividad de una instrucción de salto

Tr. 332

SETI-03-04

J.L.Huertas

Ejemplo: ARM7100

Tr. 333

SETI-03-04

J.L.Huertas

Ejemplo: ARM7500 en un sistema

Proceso: 0,6 µm Transistores: 550.000 Niveles de metalización: 2 Area: 70 mm2 MIPs: 30 Potencia: 690 mW VDD: 5 V MIPs/W: 43 Reloj: 33 MHz Tr. 334

SETI-03-04

J.L.Huertas

Ejemplo: SA-1100

Proceso: 0,35 µm Transistores: 2.500.000 Niveles de metalización: 32 Area: 75 mm2 Potencia: 330/550 mW MIPs: 220/250 VDD: 1,5/2 V MIPs/W: 665/450 Reloj: 190/220 MHz Tr. 335

SETI-03-04

J.L.Huertas

Ejemplo: LEON e implementaciones

Tr. 336

SETI-03-04

J.L.Huertas

Evolución actual y en el futuro cercano

Tr. 337

SETI-03-04

J.L.Huertas

Evolución actual y en el futuro cercano

Tr. 338

J.L.Huertas

SETI-03-04

Tr. 339

SETI-03-04

J.L.Huertas

Evolución actual y en el futuro cercano

Tr. 340

SETI-03-04

J.L.Huertas

Proceso: 0,25 µm Transistores: 110.000 Niveles de metalización: 3 Area: 2,1 mm 2 Potencia: 150 mW

VDD: 2,5 V Reloj: 200 MHz MIPs: 220 MIPs/W: 1500 Tr. 341