180 likes | 464 Views
Arquitectura de Computadores. 1. Introducción 2. La CPU 3. Lenguaje Máquina 4. La Memoria 5. Sistemas de Entrada/Salida 6. Mejora del Rendimiento 7. Arquitecturas RISC. . Arquitectura de Computadores. 6. Mejora del Rendimiento. 1. CPU Segmentada ( Pipeline ) 1.2 Un ejemplo: DLX
E N D
Arquitectura de Computadores 1. Introducción 2. La CPU 3. Lenguaje Máquina 4. La Memoria 5. Sistemas de Entrada/Salida 6. Mejora del Rendimiento 7. Arquitecturas RISC
Arquitectura de Computadores 6. Mejora del Rendimiento 1. CPU Segmentada (Pipeline) 1.2 Un ejemplo: DLX 2. Memoria Caché 1. CPU Segmentada (Pipeline) 1.2 Un ejemplo: DLX
La CPU Segmentación (Un ejemplo: DLX) • Vamos a ver una simplificación (sin tener en cuenta instrucciones multiciclo, MMU, etc.) • Arquitectura RISC load/store • Arquitectura Harvard de memoria • 5 etapas • IF: Extracción de la instrucción • ID: Decodificación / Acceso a registros • EX: Ejecución / Cálculo de operandos • MEM: Acceso a memoria • WB: Write Back (escritura en registros) • Cada etapa en un ciclo de reloj
Pipeline ...DLX Nuevo PC Salto 32 Actualizar PC Unidadde Saltos 5 32 ALU D-caché MUX I-caché 32 32 5 Almacenar Reg. Registros PC ALU Input 2 ALU Input 1 Dato a Reg. Dato de Mem. ALU Output Reg. Instr. ALU Input 3 IF ID EX MEM WB Lectura /Escritura Escritura en registros 32
Pipeline ...DLX • IF: Extracción de la instrucción IR = I_Cache [PC]IR es el Registro de Instrucción PC = PC+4 PC es el Contador de Programa • ID: Decodificación / Acceso a registros 1 Subciclo: Decodificar instrucción 2 Subciclo: ALU_Input[1..2] = Registros (IR [25-21 , 20-16]) ó ALU_Input[3] = IR[15-0] (Dir. Inmediatos) ó Nuevo PC = Dir_Salto (en instrucciones de salto)
Pipeline ...DLX • EXEjecución / Cálculo de operandos Obtener ALU_Output • operación aritmética/lógica • dirección de memoria • … • MEMAcceso a memoria Dato_a_Registro = ALU_Output ó D_Cache [ALU_Output] = Almacenar_Reg • WBWrite Back (escritura en registros) Registros[] = Dato_a_Registro ó Registros[] = Dato_de_Mem
Pipeline ...DLX DLX Instrucciones Típicas
Pipeline ...DLX 1 2 3 4 5 6 7 8 lw R1,$100 Nuevo R1 IF IF IF IF ID ID ID ID EX EX EX EX MEM MEM MEM MEM WB WB WB WB lw R2,$200 add R2,R1,R2 Antiguo R1 sub R1,R2,R1 Tiempo DLX Ralentización – Dependencias de Datos • Sólo vamos a estudiar las RAW • WAW ocurren en cauces con más de un etapa de escritura y en ejecuciones fuera de orden • WAR cuando una etapa de escritura precede a una de lectura
Pipeline ...DLX Nuevo R1 No hay conflicto IF IF IF IF IF ID ID ID ID ID EX EX EX EX EX MEM MEM MEM MEM MEM WB WB WB WB WB Se accede a los registros en el 2 subciclo de ID SOLUCIÓN SOFTWARE (Insertar NOP por el compilador) 9 1 2 3 4 5 6 7 8 lw R1,$100 lw R2,$200 add R2,R1,R2 nop nop Tiempo ¿Habría bastado con una única instrucción NOP?
Pipeline ...DLX Nuevo R1 IF IF IF IF IF IF IF IF ID ID ID ID EX EX EX EX MEM MEM MEM WB WB WB SOLUCIÓN HARDWARE (Detener el cauce) 9 10 1 2 3 4 5 6 7 8 lw R1,$100 lw R2,$200 add R2,R1,R2 sub R1,R2,R1 Tiempo ¡Cada dependencia RAW genera 2 burbujas! Se ralentiza la ejecución del programa
Pipeline …DLX Anticipación R2 IF IF ID ID EX EX MEM MEM WB WB ALU ALU R2 SOLUCIÓN HARDWARE (Anticipación) 1 2 3 4 5 6 add R2,R1,R2 sub R1,R2,R1 Tiempo ¡Eliminamos las burbujas! ¿Funciona para todas las instrucciones?
Pipeline …DLX Anticipación MEM->EX R1 Anticipación EX->EX R2 IF IF IF IF IF ID ID ID ID ID EX EX EX EX MEM MEM MEM MEM WB WB WB WB R2 SOLUCIÓN HARDWARE (Detener el cauce + Anticipación) 9 10 1 2 3 4 5 6 7 8 lw R1,$100 lw R2,$200 add R2,R1,R2 sub R1,R2,R1 Tiempo Aparecen burbujas cuando hay instrucciones de acceso a memoria (lw) El dato en una instrucción load (lw) está disponible tras la etapa MEM
Pipeline ...DLX Nuevo R5 IF IF IF IF IF IF ID ID EX EX IF MEM MEM MEM ID EXE WB WB EJEMPLO – Sin anticipación (Forwarding) 9 1 2 3 4 5 6 7 8 lw R5,$100 slli R5,R5,2 sgt R1,R4,R5 Tiempo
Pipeline …DLX IF IF ID ID EX EX WB WB CASO 1 WB WB 1 2 3 4 5 6 7 8 lw R1,$100 Acceso simultáneo MEMWB MEMWB Banco de REGISTROS slli R5,R6,2 Tiempo DLX Ralentización – Motivos estructurales • DLX no tiene riesgos estructurales (Structural Stall). • Vamos a introducir algunas modificaciones en las etapas del cauce para provocar la aparición de riesgos estructurales. Caso 1.- Supongamos que en la etapa MEM realizamos una escritura en los registros
Pipeline ...DLX CASO 2 Caso 2.- La etapa ID tiene dos subciclos (1º decodificación y 2º acceso a los operandos en el banco de registros). Dividimos la etapa ID en dos: DEC, REG. 1 2 3 4 5 6 7 8 Acceso simultáneo lw R5,$100 Banco de REGISTROS ………………………… IF IF DEC REG DEC REG EX EX MEM MEM WB WB slli R5,R5,2 Tiempo OTROS RIESGOS • Utilización de la ALU (por ejemplo para actualizar el contador de programa) • Una única memoria (accesos simultáneos desde las etapas IF y MEM).
Pipeline ...DLX ACIERTO DLX Ralentización – Bifurcaciones • El problema aparece con las instrucciones de salto condicional • Detener el cauce, para conocer la siguiente instrucción a ejecutar, reduce su rendimiento • Calcular la dirección de salto lo antes posible (etapa ID) favorece la toma de decisiones y evita los riesgos de control Implementación • BTA (Branch Target Address): Nuevo registro interno • En la etapa ID se calcula la dirección del salto (desplazamiento sobre el PC), se guarda en BTA y se comprueba la condición de salto (consulta de un registro) • Política adoptada: Predicción estática de “no saltar” • En la etapa EX, si el salto se toma, se actualiza PC con BTA • Puede ocurrir dos situaciones: • No se toma el salto => Continua la ejecución • Se toma el salto => Vaciar el cauce
Pipeline ...DLX R1=1 IF IF IF IF ID ID ID ID EX EX EX EX MEM MEM MEM MEM WB WB WB WB Bifurcaciones: NO se toma el salto Predicción estática de “no saltar” 9 10 1 2 3 4 5 6 7 8 nop BTAC = PC + despl. beqz R1,SALIR R1=1 → NO SALTAR PC = PC + 4 add R2,R3,R2 sub R5,R4,R6 SALIR: …….. Tiempo
Pipeline ...DLX R1=0 IF IF IF IF ID ID ID EX EX EX MEM MEM MEM WB WB WB Bifurcaciones: SI se toma el salto Predicción estática de “no saltar” 9 10 1 2 3 4 5 6 7 8 nop PC = BTAC beqz R1,SALIR Vaciar ¡¡SALTAR!! add R2,R3,R2 sub R5,R4,R6 SALIR: …….. Tiempo