Superescalares Scheduling estático.

Slides:



Advertisements
Presentaciones similares
Camino de Datos y Control
Advertisements

Datapath DLX.
EL Sistemas Digitales Ing. José Alberto Díaz García Escuela de Ingeniería Electrónica Arquitectura Segmentada Pipeline (Segmentación)
CLASE 11.
ISA (Instruction Set Architecture)
MIPS Intermedio.
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow.
Memoria Cachés. Universidad de SonoraArquitectura de Computadoras2 Introducción Caché es el nivel de memoria situada entre el procesador y la memoria.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Scheduling dinámico Algoritmo de Tomasulo.
El procesador Creando un solo datapath. Universidad de SonoraArquitectura de Computadoras2 Introducción 1. Crear un solo datapath a partir de los datapaths.
Datapath para las instrucciones de carga y almacenamiento (load/store)
Departamento de Ingeniería de Sistemas Universidad de Antioquia
CLASE 13.
El procesador Diseño del control.
CLASE 14.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.
ARQUITECTURA DE COMPUTADORES
MIPS Intermedio.
[ Arquitectura de Computadores ] ORGANIZACIÓN FUNCIONAL Präsentat ion Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia.
Arquitectura de Computadoras (Taller) Semestre II de 2008.
Vinculación de Instrucciones y Datos a Memoria Tiempo de compilación: si la dirección de memoria se conoce a priori, se puede generar código absoluto;
El procesador Datapath y control. Universidad de SonoraArquitectura de Computadoras2 Introducción En esta parte del curso contiene: Las principales técnicas.
Lenguaje ensamblador MIPS
Problemas Capitulo Para el fragmento de código siguiente: lwr1, 0x1ac; r1=m[0x1ac] lwr2, 0xc1f; r2=m[0xc1f] addr3,r0,r0; r3=r0+r0 mulr4,r2,r1; r4=r2*r1.
Memoria Cachés.
Organización de computadoras
Hardware de Computador
Procesadores superescalares
Pipelining Peligros de control.
Pipeline: Peligros de datos
Scheduling dinámico: algoritmo de Tomasulo
Unidad aritmético-lógica
El procesador Diseño del control.
Memoria Rendimiento del caché.
Pipelining Datapath y control.
Datapath para las instrucciones aritméticas y lógicas
Datapath para las instrucciones de brinco
Memoria Introducción.
Arquitectura de Computadoras 2012
Excepciones e interrupciones
Pipelining Peligros (hazards).
Organización del Computador
8. Diseño del Procesador Fundamentos de los Computadores
Datapath para las instrucciones de carga y almacenamiento (load/store)
Otros temas sobre cachés
Arquitectura 2013 Explicación 4.
Arquitectura 2013 Explicación 5.
Organización del caché
Creando un solo datapath
Memoria virtual.
Memoria virtual.
Pipelining Introducción.
Organización del Computador
8. Diseño del Procesador Fundamentos de los Computadores
Pipeline: Peligros de datos
Scheduling dinámico: algoritmo de Tomasulo
Pipelining Peligros de control.
Commit out of order Ciclo 1: Detecto un load que fallo en L2 en el tope del ROB Load R3(F5)=R4(F4)+R2(F2) R2(F6)=R1(F1)+R3(F5) Branch R3(F5)
Arreglos en Java.
Estructuras de Control
El procesador Datapath y control.
Memoria Cachés.
Ejercicio 5.6 sobre cachés
Otros temas sobre cachés
Memoria Cachés. Universidad de SonoraArquitectura de Computadoras2 Introducción Caché es el nivel de memoria situada entre el procesador y la memoria.
Memoria Rendimiento del caché.
Pipelining Peligros de control.
Para el fragmento de código siguiente: lwr1, 0x1ac; r1=m[0x1ac] lwr2, 0xc1f; r2=m[0xc1f] addr3,r0,r0; r3=r0+r0 mulr4,r2,r1; r4=r2*r1.
Transcripción de la presentación:

Superescalares Scheduling estático

Introducción La CPU ejecuta las instrucciones en orden. El compilador: Puede cambiar el orden de ejecución. Genera el paquete de emisión. Trata de prevenir o reducir los peligros de datos y de control. Paquete de emisión (issue packet): el conjunto de instrucciones que se emiten juntas en un ciclo de reloj. Universidad de Sonora Arquitectura de Computadoras

Introducción La mayoría de CPUs móviles (tipo ARM) son superescalares con scheduling estático. Universidad de Sonora Arquitectura de Computadoras

Ejemplo Considerar una CPU MIPS superescalar con scheduling estático y doble emisión. Limitación: solo una instrucción puede ser de tipo R o brinco y la otra puede ser una carga o un store. El paquete de emisión tiene 64 bytes (2 instrucciones). La instrucción R o de brinco se pone primero y luego la instrucción de memoria. Universidad de Sonora Arquitectura de Computadoras

Ejemplo Si el paquete no se puede completar, la instrucción faltante se reemplaza con una instrucción nop (no operation). Fuente: COD 5, p. 335. Universidad de Sonora Arquitectura de Computadoras

Peligros La forma de tratar los peligros depende de cada arquitectura. En algunas arquitecturas: El compilador quita todos los peligros insertando nops si es necesario. No hay detección de peligros por hardware ni detenciones (stalls). Universidad de Sonora Arquitectura de Computadoras

Peligros En otras arquitecturas: El hardware detecta peligros de datos y genera detenciones entre dos paquetes de emisión. El compilador evita todas las dependencias entre cada pareja de instrucciones. Universidad de Sonora Arquitectura de Computadoras

Datapath Datapath doble emisión: 1 R/B 1 Mem. Fuente: COD 5, p. 336. Universidad de Sonora Arquitectura de Computadoras

Explicación En cada ciclo se obtienen 2 instrucciones. En cada ciclo se leen hasta 4 registros: 2 de la instrucción R o beq. 1 de la instrucción lw o 2 de sw. Hay 2 ALUs: 1 para la instrucción R/beq. 1 para instrucción lw/sw. La memoria de datos no cambia (en cada ciclo solo hay máximo una instrucción de acceso a memoria). Universidad de Sonora Arquitectura de Computadoras

Explicación En cada ciclo hasta dos instrucciones necesitan escribir registros: Instrucciones R. Instrucciones lw. La carga sigue teniendo una latencia de uso de 1. El siguiente paquete de emisión a una carga no puede depender de su registro de destino. Universidad de Sonora Arquitectura de Computadoras

Ejemplo Dado el siguiente código en una CPU MIPS de doble emisión y scheduling estático: loop: lw $t0, 0($s1) # t0 = elemento de arreglo addu $t0, $t0, $s2 # le suma s2 sw $t0, 0($s1) # lo guarda de nuevo addi $s1, $s1, -4 # decrementa el índice bne $s1, $zero, loop Mostrar como se emite el código. Suponer que los brincos se predicen y que el hardware maneja los peligros de control. Universidad de Sonora Arquitectura de Computadoras

Ejemplo Las instrucciones se reordenan para evitar al máximo los peligros de datos. Los espacios representan instrucciones nop. ALU Mem Ciclo loop: lw $t0, 0($s1) 1 addi $s1, $s1, 4 2 addu $t0, $t0, $s2 3 bne $s1, $zero, loop sw $t0, 4($s1) 4 Universidad de Sonora Arquitectura de Computadoras

Ejemplo Las 5 instrucciones se ejecutan en 4 ciclos. CPI = 0.8  IPC = 1.25 Lo ideal es CPI = 0.5 y, por lo tanto, IPC = 2. Importante: los nops no se cuentan. Universidad de Sonora Arquitectura de Computadoras

Loop unrolling Técnica de compilación que consiste en extender (desenrollar) un ciclo. De esta forma se pueden emitir juntas instrucciones de distintas iteraciones. Universidad de Sonora Arquitectura de Computadoras

Loop unrolling en C Dado el siguiente código en C: for (int i = 0; i < 4; i++) { a[i] = b[i] + c[i]; } Desenrollar el ciclo significa hacer: a[0] = b[0] + c[0]; a[1] = b[1] + c[1]; a[2] = b[2] + c[2]; a[3] = b[3] + c[3]; Universidad de Sonora Arquitectura de Computadoras

Ciclo original en MIPS li $t5, 0 # i = 0 loop: beq $t5, 4, fin # if i == 4 goto fin lw $t0, 0($s0) # s0 apunta a B[i] lw $t1, 0($s1) # s1 apunta a C[i] add $t2, $t0, $t1 sw $t2, 0($s2) # s2 apunta a A[i] addi $s0, $s0, 4 # apunta a B[i + 1] addi $s1, $s1, 4 # apunta a C[i + 1] addi $s2, $s2, 4 # apunta a A[i + 1] Universidad de Sonora Arquitectura de Computadoras

Ciclo original en MIPS addi $t5, $t5, 1 # i++ j loop Universidad de Sonora Arquitectura de Computadoras

Loop unrolling en MIPS lw $t0, 0($s0) # s0 apunta a B[0] lw $t1, 0($s1) # s1 apunta a C[0] add $t2, $t0, $t1 sw $t2, 0($s2) # s2 apunta a A[0] lw $t3, 4($s0) # s0 + 4 apunta a B[1] lw $t4, 4($s1) # s1 + 4 apunta a C[1] add $t5, $t3, $t4 sw $t5, 4($s2) # s2 + 4 apunta a A[1] Universidad de Sonora Arquitectura de Computadoras

Loop unrolling en MIPS lw $t6, 8($s0) # s0 + 8 apunta a B[2] lw $t7, 8($s1) # s1 + 8 apunta a C[2] add $t8, $t6, $t7 sw $t8, 8($s2) # s2 + 8 apunta a A[2] lw $s3, 12($s0) # s0 + 12 apunta a B[3] lw $s4, 12($s1) # s1 + 12 apunta a C[3] add $s5, $s3, $s4 sw $s5, 12($s2) # s2 + 12 apunta a A[3] Universidad de Sonora Arquitectura de Computadoras

Loop unrolling Ventajas: Se quita la instrucción beq y se evitan los peligros de control. Las distintas iteraciones son independientes entre si y sus instrucciones se pueden reordenar. Desventaja: Los registros pueden ser insuficientes para desenrollar un ciclo grande. Esto se puede evitar desenrollando el ciclo parcialmente. Universidad de Sonora Arquitectura de Computadoras

Loop unrolling parcial Ciclo original en C: for (int i = 0; i < 20; i++) { a[i] = b[i] + c[i]; } Ciclo en C desenrollado parcialmente: for (int i = 0; i < 20; i += 4) { a[i] = b[i] + c[i]; a[i + 1] = b[i + 1] + c[i + 1]; a[i + 2] = b[i + 2] + c[i + 2]; a[i + 3] = b[i + 3] + c[i + 3]; Universidad de Sonora Arquitectura de Computadoras

Ejemplo Repetir el ejemplo anterior: loop: lw $t0, 0($s1) # t0 = elemento de arreglo addu $t0, $t0, $s2 # le suma s2 sw $t0, 0($s1) # lo guarda de nuevo addi $s1, $s1, -4 # decrementa el índice bne $s1, $zero, loop Suponiendo que el índice del ciclo es múltiplo de 4. Universidad de Sonora Arquitectura de Computadoras

Ejemplo Fuente: COD 5, p. 338. Universidad de Sonora Arquitectura de Computadoras

Explicación Ahora hay 4 copias de lw, addu y sw. Un addi y un bne. Hay 3 temporales extras $t1, $t2 y $t3. Estos temporales son para evitar introducir dependencias de nombre entre grupos de lw/addu/sw. Ahora son 14 instrucciones y se ejecutan en 8 ciclos. CPI = 8 / 14 = 0.57  IPC = 1.75. Universidad de Sonora Arquitectura de Computadoras

Explicación El CPI está cerca del ideal de 0.5. El costo es usar 4 registros temporales en vez de 1 y utilizar 14 instrucciones en vez de 5. Universidad de Sonora Arquitectura de Computadoras