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