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