TEMA 2 ILP BASADO EN PLANIFICACIÓN ESTÁTICA DE INSTRUCCIONES ÍNDICE

Documentos relacionados
TEMA 3. PLANIFICACIÓN (SCHEDULING) DE INSTRUCCIONES Arquitectura de Sistemas Paralelos 1. pág 2. direcc MEM

TEMA 3 PLANIFICACIÓN O REORDENAMIENTO (SCHEDULING) DE INSTRUCCIONES ÍNDICE

Arquitectura de Computadores Problemas (hoja 4). Curso

Introducción a los procesadores ILP (Instruction-Level Parallel)

SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 3. PLANIFICACIÓN ESTÁTICA AVANZADA. TMS320C6713

TEMA 4. ARQUITECTURA IA-64

1.2. Implementación de Procesadores Superescalares

TEMA 3. ILP BASADO EN PLANIFICACIÓN DINÁMICA Sistemas Paralelos y Distribuidos 3º GIC. pág 1

Tema 1: PROCESADORES SEGMENTADOS

Definición de prestaciones

Ejercicios de Paralelismo a Nivel de Instrucción

ARQUITECTURA DE SISTEMAS PARALELOS I. 4º INGENIERÍA INFORMÁTICA. PRÁCTICA 3.

Paralelismo al nivel de instrucciones

Tutorías con Grupos Reducidos (TGR) Sesión 2: Paralelismo a Nivel de Instrucción

Paralelismo en monoprocesadores. Procesadores VLIW

Tema 7: Procesadores superescalares

3. SEGMENTACIÓN DEL CAUCE

Arquitectura de Computadores Problemas (hoja 2). Curso

Arquitectura de Computadores II Clase #16

Departamento de Automática

Dpto. Arquitectura y Tecnología de Computadores SPD. Práctica 5. pág 1

Tema 10. Introducción a la op5mización de código

6. PROCESADORES SUPERESCALARES Y VLIW

int vector[100]; // en principio vector tiene al menos // cien elementos aunque pueda tener más... for (i=0; i<100; i++) vector[i] = vector[i] + 1;

OBJETIVOS ALGUNAS CONSIDERACIONES SOBRE WINDLX

2. SEGMENTACIÓN ENCAUZADA AVANZADA Y PARALELISMO DE INSTRUCCIONES: EJERCICIOS Y CUESTIONES

Procesadores de palabra de instrucción muy larga (VLIW) v.2012

Arquitectura de Computadoras. Clase 4 Segmentación de Instrucciones

Planificación estática

TEMA 2: PARALELISMO INTERNO EN SISTEMAS COMPUTADORES SEGMENTACION

2. SEGMENTACIÓN ENCAUZADA AVANZADA Y PARALELISMO DE INSTRUCCIONES: EJERCICIOS Y CUESTIONES

ADDI R4,R0,#2 ADDI R1,R0,#40 LOOP: LW R2,0(R1) SUBI R3,R2,#1 MUL R2,R3,R2 DIV R2,R3,R4 SW 0(R1),R2 SUBI R1,R1,#4 BNEZ R1, LOOP ADDI R4,R0,#0

Procesadores superescalares. Introducción

Explotación del paralelismo a nivel de instrucción

COMPUTADORES SEGMENTADOS (DLX)

Arquitectura de Computadores II Clase #5

Arquitectura de Computadores II Clase #16

Aspectos avanzados de arquitectura de computadoras Pipeline. Facultad de Ingeniería - Universidad de la República Curso 2017

#define MAX 1024 void escala_vect (float A[MAX], float B[MAX], float k) { int i; for (i=0; i < MAX; i++) B[i]=k*A[i]; }

ARQUITECTURA DE COMPUTADORES

1. Objetivo y evolución de los procesadores ILP.

Arquitectura de Computadores. Tema 11. Pipelining Avanzado

Tema 5. Segmentación: conceptos básicos

Arquitectura Segmentada: Conceptos básicosb

TEMA 1: CONCEPTOS BÁSICOS DE PARALELISMO Y ANÁLISIS DE PRESTACIONES

Pipeline (Segmentación)

Arquitectura de Computadoras Trabajo Práctico N 7 Pipeline de Instrucciones Primer Cuatrimestre de 2010

Arquitectura e Ingeniería de Computadores. Examen Parcial. 7/02/2012

Ingeniería Informática. Ampliación de Estructura de Computadores. Curso

HISTORIA DEL PIPELINE. Juan Antonio Romano Largo. Arquitectura de Computadores.

ARQUITECTURA DE COMPUTADORES Problemas TEMA 4: Microprocesadores avanzados

Procesadores segmentados. El DLX.

Plataformas de soporte computacional: arquitecturas avanzadas,

Unidad 4 - Procesamiento paralelo. Arquitectura de computadoras. D o c e n t e : E r n e s t o L e a l. E q u i p o : J e s s i c a F i e r r o

Arquitectura de Computadores. Tema 4 PROCESADORES SEGMENTADOS

Arquitectura de Computadoras Trabajo Práctico N 8 Pipeline de Instrucciones 1 Primer Cuatrimestre de 2016

Estrategias de predicción dinámicas.

Sistemas embebidos basados en FPGAs para instrumentación

Primer Semestre Laboratorio de Electrónica Universidad de San Carlos de Guatemala. Electrónica 5. Aux. Marie Chantelle Cruz.

Arquitecturas RISC. Arquitectura de Computadoras y Técnicas Digitales - Mag. Marcelo Tosini Facultad de Ciencias Exactas - UNCPBA

Introducción a la arquitectura de computadores

Qué es Pipelining? Es una técnica de implementación en la que se superpone la ejecución de varias instrucciones.

ARQUITECTURA DE SISTEMAS PARALELOS. 3º INGENIERÍA TECNICA EN INFORMÁTICA DE SISTEMAS. PRÁCTICA 6 (curso 03/04) SEGMENTACION EN EL PROCESADOR DLX

ARQUITECTURA DE COMPUTADORES. Práctica 8

5. Procesador: camino de datos y control

Granularidad y latencia

Departamento de Automática

Procesador Segmentado

Tema 1: PROCESADORES SEGMENTADOS

MICROCONTROLADORES PIC16F84 ING. RAÚL ROJAS REÁTEGUI

Organización de Computadoras. Principios de Conjuntos de Intrucciones

Autor: Longinos Recuero Bustos

Tratamiento de Excepciones en MIPS

Práctica 1 - Rendimiento *

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

ARQUITECTURA DE SISTEMAS PARALELOS I. 4º INGENIERÍA INFORMÁTICA. PRÁCTICA 5. PLANIFICACIÓN DINÁMICA: EL ALGORITMO DE TOMASULO.

Multiplicación de matrices con DLX

TEMA 4: PARALELISMO A NIVEL DE DATOS (DLP).

Estructura de Computadores 2 [08/09] Entrada/Salida en procesadores MIPS

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

Microcontroladores. Sistemas embebidos para tiempo real

Arquitectura de Computadoras

TEMA 2: ARQUITECTURAS MULTIMEDIA Y VECTORIALES.

Ingeniería Informática. Ampliación de Estructura de Computadores. Curso Introducción a la segmentación de Instrucciones.

Arquitectura de Computadores II Clase #4

Tecnologías y Arquitecturas

Paralelismo en monoprocesadores. Planificación en ILP

Tecnologías, Organización y Microarquitectura

ARQUITECTURA DE SISTEMAS PARALELOS I. 4º INGENIERÍA INFORMÁTICA. PRÁCTICA 4. PLANIFICACIÓN DINÁMICA: EL ALGORITMO DE TOMASULO. 1. OBJETIVOS.

Arquitectura del MIPS: Introducción

ORGANIZACIÓN DOCENTE del curso

ARQUITECTURA DE COMPUTADORAS

2EMHWLYRV 5HIHUHQFLDV

Organización del Computador 1. CPU (ISA) Conjunto de Instrucciones de la Arquitectura 2017

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

CAPÍTULO 2 PROCESADORES SUPERESCALARES

ARQUITECTURA DE COMPUTADORAS

202 PROBLEMAS DE ARQUITECTURA DE COMPUTADORES

Introducción PROCESADOR SUPERESCALAR. Paralelismo. Grado m: en cada ciclo se buscan/decodifican m instrucciones. supes

Procesador MIPS - Registros

Transcripción:

TEMA 2 ILP BASADO EN PLANIFICACIÓN ESTÁTICA DE INSTRUCCIONES ÍNDICE 2.1. Conceptos fundamentales: Grafo y tipos de dependencias, Bloques básicos, Límite teórico de ejecución (dataflow-limit), compatibilidad de las aplicaciones. 2.2. Planificación estática básica. Desenrollado de bucles. 2.3. Planificación estática avanzada: Segmentación software. 2.4. Ejecución predicativa, Planificación de trazas y Especulación software. 2.5. Enfoques del paralelismo: Procesadores VLIW. 2.6. Ejemplos reales TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 1

2.1. CONCEPTOS FUNDAMENTALES Definición de Planificación, secuenciamiento o reordenamiento (scheduling): reordenar instrucciones para evitar bloqueos. Objetivo: reducir Bloqueos de datos. for (i=0; i<n; i++) { ejercicio: hallar cuerpo del bucle } LF F2, 0(R1) MULTF F1, F2, F3 DIVF F2, F1, F4 ADDF F1, F2, F3 SF 0(R1), F1 ----------------------------------------- ADDI R1, R1, 4 SLT R2, R1, R7 BNEZ R2, bucle LF F2, 0(R1) MULTF F1, F2, F3 ADDI R1, R1, 4 DIVF F2, F1, F4 SLT R2, R1, R7 ADDF F1, F2, F3 SF -4(R1), F1 BNEZ R2, bucle TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 2

Tipos de dependencias de datos Dependencia real (registros) o RAW (read after write) o Es inevitable e inherente al algoritmo o son muy frecuentes Dependencias ficticias (registros) o WAW (write after write): dependencia de salida o WAR (write after read): se le llama antidependencia o Se pueden eliminar mediante renombrado de registros Dependencia real (memoria) o Analizar dinámicamente direcciones ejercicio: señalar tipos de dependencias en código anterior ejercicio: qué significa dinámicamente? Renombrado. Ejemplo MULTF F1, F2, F3 DIVF F2, F1, F4 ADDF F1, F2, F3 SF 0(R1), F1 MULTF F1, F2, F3 DIVF F20, F1, F4 ADDF F10, F20, F3 SF 0(R1), F10 TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 3

Conclusión: programa como grafo de dependencias reales. Pero existe un límite de CPI (data flow limit o límite de flujo de datos) o Solo se ven las fases de ALU y acceso memoria: EX/MEM o Fases IF ID WB etc. se hacen en paralelo MULTF F1, F2, F3 MULT DIVF F20, F1, F4 IF ID IF ID ADDF F10, F20, F3 IF ID SF 0(R1), F10 Tiempo TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 4 DIV Bypass y Registros temporales ADD Planificación estática limitada por saltos (es difícil cruzarlos ). Bloques básicos: barreras de Planificación for (i=0; i<n ; i++) { if (a[i]<0) { } } else { } b[i]=-a[i]; b[i]=a[i]; WB WB MEM ejercicio: renombrar registros para eliminar dep. ficticias en bucle anterior. ATENCION: R1

Importancia de planificación estática Usar un buen compilador (incluso si CPU es muy dinámica) Buscar flags de optimización del compilador Compilador nativo de intel : icc 12 (ahora Composer XE) NOTA: esta gráfica no es de un VLIW, sino de Intel Xeon: familia Intel para servidores (actualmente similar a Core i7) http://software.intel.com/en-us/articles/intel-composer-xe/ TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 5

2.2 PLANIFICACIÓN ESTÁTICA. DESENROLLADO DE BUCLES. EJEMPLO / RESUMEN DE DESENROLLADO Bucles: más del 90% t. de ejec. Suponemos bucle paralelizable (iteraciones independientes). Ejemplo: double s, x[m], y[m]; int i; for (i=0 ; i<m ; i++ ) y[i]= x[i] * s ; Desenrollado (en alto nivel) : for (i=0 ; i<m%3 ; i++) y[i]= x[i] * s; //start-up (prólogo o cabecera) // sup. tiempo de ejecución pequeño (M es grande) for ( ; i<m ; i+=3 ) { y[i+0]= x[i+0] * s ; y[i+1]= x[i+1] * s ; y[i+2]= x[i+2] * s ; } TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 6

Pasos para el Desenrollado (bajo nivel) bucle_orig: LD F2, 0(R1) ; Instrucciones útiles MULTD F4, F2, F24 ; F24 contiene el valor de s SD (R3)0, F4 ;---------------------- ADDI R1, R1, 8 ; Instrucciones de overhead (control bucle) ADDI R3, R3, 8 SLTI R7, R1, fin_array_x; constante apunta al final de x[m] BNEZ R7, bucle_orig o instr. de overhead (de control del bucle) o instr. útiles de cálculo sobre estructuras de datos (p ej vectores) casi no hay dependencias entre ambos grupos Reordenación evidente TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 7

bucle_intermedio2: // Desenrollado del bucle principal LD F2, 0(R1) MULTD F4, F2, F24 ; F24 contiene el valor de s SD (R3)0, F4 LD F2, 8(R1) MULTD F4, F2, F24 SD (R3)8, F4 LD F2, 16(R1) MULTD F4, F2, F24 SD (R3)16, F4 ;---------------------- ADDI R1, R1, 8*3 ADDI R3, R3, 8*3 SLTI R7, R1, fin_array_x BNEZ R7, bucle_intermedio2 TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 8

Se renombran registros para evitar dependencias ficticias WAR, WAW. Usamos notación con primas ( ) por simplicidad bucle_intermedio3: LD F2, 0(R1) MULTD F4, F2, F24 ; F24 contiene el valor de s SD (R3)0, F4 LD F2, 8(R1) MULTD F4, F2, F24 SD (R3)8, F4 LD F2, 16(R1) MULTD F4, F2, F24 SD (R3)16, F4 ;---------------------- ADDI R1, R1, 8*3 ADDI R3, R3, 8*3 SLTI R7, R1, fin_array_x BNEZ R7, bucle_intermedio3 TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 9

Se entrelazan las instrucciones de las distintas iteraciones bucle_desenrollado: LD F2, 0(R1) LD F2, 8(R1) LD F2, 16(R1) MULTD F4, F2, F24 ; F24 contiene el valor de s MULTD F4, F2, F24 MULTD F4, F2, F24 SD (R3)0, F4 SD (R3)8, F4 SD (R3)16, F4 ;---------------------- ADDI R1, R1, 8*3 ADDI R3, R3, 8*3 SLTI R7, R1, fin_array_x BNEZ R7, bucle_desenrollado TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 10

Opcionalmente se colocan instrucciones tras la más larga (para evitar ciclos de bloqueo) bucle_desenrollado_opc: LD F2, 0(R1) LD F2, 8(R1) LD F2, 16(R1) MULTD F4, F2, F24 ; F24 contiene el valor de s MULTD F4, F2, F24 MULTD F4, F2, F24 ADDI R1, R1, 8*3 SD (R3)0, F4 SD (R3)8, F4 SD (R3)16, F4 SLTI R7, R1, fin_array_x ; ADDI R3, R3, 8*3 BNEZ R7, bucle_desenrollado_opc Prestaciones máximas si desenrollo infinitas veces x[0]= x[0] * s ; x[1]= x[1] * s ; x[m-1]= x[m-1] * s ; ejercicio: hacerlo para otro bucle de vectores TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 11

Aceleración: o ATENCIÓN! al reducir el número de instrucciones, el CPI no es buena medida de rendimiento. o Si se puede usar Ciclos / elem. procesado del vector Instr./elem vector Bucle original (3 instr útiles + 4 instr overhead) / elem = 7 instr /elem. Bucle desenrollado (3 iter.) (3*3 instr útiles + 4 instr overhead) / 3 elem vector = = (3 instr útiles + 4/3 instr overhead) /elem= 4.33 instr/elem Fsaltos 1/7 = 14.3% 1/13 = 7.7% 0% Tam código estático (bytes) Desenrollado infinitas iteraciones (K ) (3*K instr útiles + 4 instr overhead) / K elem vector = (K ) = 3 instr útiles/elem 7 * 4 13 * 4 3 * K * 4 Notas Desprecio iteraciones de prólogo Prestaciones máximas. Tamaño de código estático máximo ejercicio: hallar A entre las 3 columnas si CPI=1.4,1.1,1.0 TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 12

CONCLUSIONES: - Se han reducido las instr. overhead o estamos rescribiendo el código fuente de leng. iterativo para hacerlo más rápido - Se aumenta las posibilidades de planif. estática, en cuanto se reducen el porcentaje de saltos o por cada salto, hay más instr. de otro tipo - Se necesitan más registros (en RISC los hay) - Se ha de conocer la endoarquitectura de la CPU (duración de U.F., existencia de bypass, etc.) o compatibilidad en entredicho (se verá en VLIW). TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 13

2.3. Planificación estática avanzada Bucles no paralelizables: gran variedad de casos. Aquí ejemplos ilustrativos Hay una dependencia entre la iteración actual i y las anteriores. o Serie de Fibonacci (serie con recurrencia: a i+k =f(a i ) ) for (i=2;i<m; i++) x[i]=x[i-1]+x[i-2]; //(2 Load, 1 Store)/1 elem // Si desenrollo: for (i=2;i<m; i+=3) { x[i]=x[i-1]+x[i-2]; x[i+1]=x[i]+x[i-1]; x[i+2]=x[i+1]+x[i]; } // En total:(2 Load,3 Store)/3 elem o Se obtiene cierta aceleración por eliminar instrucciones. o Para a i+k =f(a i ), si k es grande puedo desenrollar k veces: for (i=0;i<m; i++) x[i+4]=x[i]*s; // desenrollo 4 iteraciones: for (i=0;i<m; i+=4) { x[i+4]=x[i+0]*s; x[i+5]=x[i+1]*s; x[i+6]=x[i+2]*s; x[i+7]=x[i+3]*s; } TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 14

Operaciones que cumplen propiedad asociativa o Sumatorio, producto múltiple, búsqueda de mínimo/máx de un vector, etc. o Existe dependencia en la variable acumuladora o Si se rescribe, desaparece. Por ej con acumuladores parciales: - for (i=0;i<m;i++) t = t + y[i]; - for (i=0;i<m; i+=3){ t0 += y[i+0]; t1 += y[i+1]; t2 += y[i+2]; } t = t0 + t1 + t2; Ejercicio: Desenrollar el Producto escalar de dos vectores ejercicio: pensar en búsqueda de mínimo/máx de un vector var. Acumuladoras de y[0] y[m/3], y[m/3] y[2m/3-1], y[2m/3] y[m-1], TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 15

2.3. Segmentación software o encadenamiento de iteraciones (software pipelining). o bucle paralelizable o no hay registros suficientes (CISC) para desenrollar, o o no interesa tamaño grande de código. Recordemos el mismo ejemplo: for (i=0 ; i<m ; i++ ) y[i]= x[i]*s; bucle_orig: ; instr útiles LD F2, 0(R1) MULTD F4, F2, F24 ; F24 contiene el valor de s SD (R3)0, F4 ; instr overhead a continuación (increm. punteros, saltos, comp.) ADDI R1, R1, 8 ADDI R3, R3, 8 SLTI R7, R1, fin_array_x; constante apunta al final de x[m] BNEZ R7, bucle_orig TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 16

Software pipelining: Esquema Esquema en la siguiente tabla: instr. útiles iter 0 LD 0 MULTD 0 SD0 iter 1 LD 1 MULTD 1 SD 1 iter 2 LD 2 MULTD 2 SD 2 iter 3 LD 3 MULTD 3 SD 3 iter 4 LD 4 MULTD 4 SD 4 prólogo iteraciones reordenadas epílogo De la ejecución normal (flechas rojas) cambio a Sw pipelining (flechas verdes). TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 17

Software pipelining: Ejemplo Prólogo: LD 0 MULTD 0 LD 1 Bucle_sw_pp: SD 0 (K) MULTD 1 (K+1) LD 2 (K+2) instr overhead (contendrán el salto a etiqueta Bucle_sw_pp) Epílogo: SD M-2 MULTD M-1 SD M-1 // se alejan las dependencias reales (van de una iter. a la siguiente) NOTAS: o las instr overhead deberán modificar las constantes (offset) convenientemente (no es fácil). o Habrá otras instr overhead en el prólogo y epílogo. o Se presupone que al menos se van a ejecutar dos iteraciones. TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 18

Software pipelining más desenrollado Desenrollando 2 iteraciones (no se dibujan las instr overead por simplificar el esquema) PRÓLOGO BUCLE EPÍLOGO LD 0 MULTD 0 LD 1 MULTD 1 LD 2 LD 3 SD 0 (K) SD 1 (K+1)... MULTD 2 (K+2) MULTD 3 (K+3)... SDM-4 SD M-3 LD 4 (K+4) LD 5 (K+5)... MULTDM-2 SD M-2 MULTD M-1 SD M-1 Sw pipelining: ejecución por columnas (flecha verde). Práctica 1: CCS (compilador familia TMS320) puede usar esta técnica TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 19

2.4. Ejecución predicativa, LEMA: Más planificación estática si aumenta nº medio instrucciones entre 2 saltos. Solución: Transformar dependencias de control en dependencias de datos. Útil sobre todo para saltos difíciles de predecir (if else) Idea: Instrucciones Condicionadas o Predicadas : sólo se ejecutan si se cumple una condición. Gran variedad en máquinas reales. Todas similares a: CMOVZ Rd,Rf,Rcond; equivale a if (Rcond==0) Rd=Rf; CMOVNZ Rd,Rf,Rcond; equivale a if (Rcond!=0) Rd=Rf; Ejemplo: Rb = abs(ra): Rb=Ra; if (Ra<0) Rb=-Rb; Addi Rb,Ra,0 Comparar si fuera así: Slti Rcond,Rb,0 //Rcond=1 si Rb<0 if (Ra<0) Rb=-Ra; Beqz Rcond,sigue else Rb=Ra; Sub Rb,R0,Rb // sólo se ejecuta si NT sigue: Salto: difícil acertar en su predicción. Si uso CMOVZ Addi Rb,Ra,0 Sgei Rcond,Rb,0 //Rcond=0 si Rb<0 Sub Rd,R0,Rb // inst que siempre se ejecuta CMOVZ Rb,Rd,Rcond TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 20

Instrucciones Condicionadas o Predicadas (II) Otro ejemplo: k = min(c,m,y); mínimo de 3 valores (usado en conversión RGB CMYK k=c; if (k>m) k = m; if (k>y) k = y; ADDI Rk, Rc, 0 SGT R1cond, Rk, Rm CMOVNZ Rk, Rm, R1cond SGT R2cond, Rk, Ry CMOVNZ Rk, Ry, R2cond Instr predicadas completas (full predication) Arquitectura ARM (casi toda instrucción) Intel VLIW Itanium IA-64 (casi toda instrucción) Muchos otros VLIW, como DSP TMS320C6713 (práctica) Ejemplo: Rb = abs(ra): Rb=Ra; if (Ra<0) Rb=-Rb; Addi Rb,Ra,0 Slti Rcond,Rb,0 //Rcond=1 si Rb<0 [Rcond] Sub Rb,R0,Rb // se ejecuta Sub pero sólo modifica // el registro destino Rb si Rcond!=0 TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 21

Instrucciones Predicadas (III): caso general if else con n variables de salida: if (cond==0) { x1 =... x2 =...... xn=... } else { y1 =... y2 =...... yn=... } Seqi Rcond, cond, 0 [Rcond] Oper Rx1,... [Rcond] Oper Rx2,...... [Rcond] Oper Rxn,... [!Rcond] Oper Ry1,... [!Rcond] Oper Ry2,...... [!Rcond] Oper Ryn,... Donde Oper es la última operación que se asigna a la variable de salida Se ejecutarían aprox. doble número de instr. En teoría pueden desaparecer todos los if else, pero: o Compiladores usuales: sólo predican 3 o 4 instrucciones o Compiladores para VLIW: predican más (CCS de TMS320 hasta 7 instr.) Más ejemplos Procesado Condicional: tema 4 PARALELISMO DATOS (DLP) TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 22

2.4. Planificación de trazas y (I) Concepto de Planificación de trazas: Planificar (reordenar) instrucciones a través de la traza de ejecución más probable, cruzando saltos Se usa mucho para proc. VLIW //CÓDIGO EJEMPLO Instr previas; If (cond) { x=x+s+t; otras instr del if; } else { y=y+s+u; otras instr del else; } ejercicio: dibujar diagrama flujo Posible traducción (no completa): Instr previas; //varios LW If (cond) { ADD Rst, Rs, Rt ADD Rx, Rx, Rst SW 0(RBx), Rx otras instr del if; } else { ADD Rsu, Rs, Ru ADD Ry, Ry, Rsu SW 0(RBy), Ry otras instr del else; } TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 23

Planificación de trazas y (II) Cambio inocuo que permite tener más instr antes del if Instr previas; ADD Rst, Rs, Rt ADD Rsu, Rs, Ru If (cond) { ADD Rx, Rx, Rst SW 0(RBx), Rx otras instr del if; } else { ADD Ry, Ry, Rsu SW 0(RBy), Ry otras instr del else; } O también se podría (barajar estas posibilidades según convenga): Instr previas; ADD Rst, Rs, Rt ADD Rsu, Rs, Ru ADD Rx, Rx, Rst ADD Ry, Ry, Rsu If (cond) { SW 0(RBx), Rx otras instr del if; } else { SW 0(RBy), Ry otras instr del else; } TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 24

Planificación de trazas y Especulación software (III) Concepto de especulación de instr. Cambio especulativo. Si apuesto (en tiempo compilación) que caso T (cond. cierta) es más probable: Instr previas; // LW Rx, 0(RBx) ADD Rst, Rs, Rt ADD Rxnuevo, Rx, Rst SW 0(RBx), Rxnuevo if (cond) { Pensar otro ejemplo de planif. trazas otras instr del if;/*incluso estas instr se podrían sacar del cuerpo del if*/ } else { SW 0(RBx), Rx /*deshace lo especulado */ ADD Rsu, Rs, Ru ADD Ry, Ry, Rsu SW 0(RBy), Ry otras instr del else; } Existe gama catalogada de técnicas de planificación de trazas, en función de si hay saltos hacia fuera de un bloque básico o hacia adentro. Esta técnica, combinada con la predicación, permite múltiples reordenaciones Atención: Qué ocurre si llega una interrupción tras SW 0(RBx), Rxnuevo? TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 25

Procesadores LIW o VLIW Reducir N inst. Very Long Instruction Word IDEA: Trasladar la complejidad de la emisión (y planificación) al compilador o Compilador agrupa varias operaciones (instrucciones RISC), en macroinstrucciones VLIW: hasta p operaciones en paralelo (p slots ) o Necesita técnicas avanzadas de planificación (scheduling) estática o No tienen algoritmo de planificación dinámica (in-order-execution). Instrucciones EX IF ID EX ME WB EX EX IF ID EX ME WB EX OPC= operaciones/ciclo (pues CPI no indica nada) Tiempo IPC ideal = 1 OPC ideal = p OPC <= p (slots vacíos) % slots vacíos si OPC=2<p=3 IF: normalmente 64, 128, 256 bits ID: típicamente p= 3 a 8 operaciones EX y MEM: al menos tantas UF como p. WB: numerosos puertos del fichero de registros (normalmente más de 10, con ID) TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 26

Implementación de VLIW EMISIÓN TOTALMENTE ESTÁTICA: o No detecta riesgos (en tiempo de ejecución) o Nunca bloquea la máq. CPI = 1+CPI MEM siempre o Compatibilidad en entredicho: compilador debe conocer la arquitectura (la duración de las operaciones). ALGO DE EMISIÓN DINÁMICA (la estática ayuda): > Ciertos bits especifican posibles dependencias y paralelismo de instr. > Puede haber bloqueos calcular el OPC no es tan fácil Los 1º VLIW tenían instr muy rígidas: obligaban a recompilar el código. Los actuales tienen instr más flexibles y complejas: compatibilidad: no necesitan recompilar (aunque sería mejor). Ventajas VLIW: Ahorro hardware permite complicar otros recursos: o 128 registros GPR de 64 bits, 128 reg FP, etc. en Itanium. o Menor consumo atractivo en sistemas empotrados (embedded media processors). Mucha Variedad: Sólo INT, orientado a FP, etc. Empotrar un VLIW full-custom en un SoC (system-on-a-chip, explicado en Máster MICR) Desventajas VLIW: mayor tamaño del código. Caché de instr. desperdiciado Proponer 3 y 5 slots para balancear bien el SAXPY o Tecn estáticas carecen de información de ejecución (ej. BTB, RAW memoria, ) TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 27

Ejemplo: código RISC VLIW CON EMISIÓN TOTALMENTE ESTÁTICA Código RISC escalar :bucle lf f1, 0(r11) lf f2, 0(r12) multf f3, f1, f2;; addi r11, r11, 4 addi r12, r12, 4 subi r8, r11, vec2 /*apunta al final del vector 1 */ rbnez r8, bucle /* instr de hueco */ addf f31, f31, f3 Qué hace este código? Para dos vectores apuntados por r11, r12 código (sin desenrollar) VLIW-RISC :bucle addi r11, r11, 4 lf f1, 0(r11) lf f2, 0(r12) nop nop;; addi r12, r12, 4 nop nop nop nop;; nop nop nop nop nop;; subi r8, r11, vec2 nop nop nop multf f3, f1, f2;; nop nop nop nop nop;; nop nop nop nop nop;; nop nop nop nop nop;; bnez r8, bucle nop nop nop nop;; /* instr de hueco */ Nop nop nop addf f31, f31, f3 nop;; Hallar OPC, y Tam efectivo caché si OPC<p TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 28

Ejemplo 2: TMS320C6713 DSP (Digital Signal Processor) De Texas Instrument Juego instr. RISC Macroinstrucciones 256 bits: IPC ideal hasta 8 instr. (operaciones) por ciclo Arquitectura muy ortogonal o Casi todos los reg. Valen para todo o No hay restricciones en las instr. Exactamente 8 U.F. (una por instrucción/operación ): o 2 grupos ( Data Paths ) de 4 UF cada una - 16 reg. (32 bits) por cada grupo: A0-A15 y B0-B15 o UF agrupadas por slots. A grosso modo (más detalles en práctica 1) Slots para operaciones INT Slots para operaciones FP 2 Ld/St 2 Ld/St 2 MULT 2 MULT FP 4 INT 4 varias (2 de ADDFP, otras: CMP, conversión ) Caché L1 separada instr y datos o 2 puertos cache datos (32 bits ancho) TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 29

ESQUEMA TMS320C67x TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 30

Empaquetamiento de 8 instrucciones Se pueden ejecutar varias en paralelo o de una en una (en serie) Empaquetamiento reduce tamaño de código F.P. Fetch packet : o son 256 bits (8 instr.) E.P. Execution packet : o grupo de instr. que se pueden ejecutar en paralelo (de 1 a 8) El bit p indica si se paraleliza con la sig. TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 31

CADENA (PIPELINE) PG: Program address generate PS: Program address send PW: Program access ready wait PR: Program fetch packet receivee DP: Instruction dispatch (parallell detection) DC: Instruction decode E1 a E10: operands read, execution and WB (duración variable según instr.) TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 32

EJEMPLO DE EMPAQUETAMIENTO Y EJEC.DE INSTR. Ejemplo: o Fetch Packet número n con 3 E.P. o Resto de F Fetch Packets con un solo E.P. (8 instrucciones en paralelo totalmente) instruction A ;EP k FP n instruction B ; instruction C ;EP k+1 FP n instruction D instruction E instruction F ;EP k+2 FP n instruction G instruction H Cuántos ciclos durará el FetchPacket n?... OTRAS FPs con EP de k + 3 a k + 8 (8 instr. En paralelo) indica que se ejecuta en paralelo con la anterior. Ver cronograma (trivial) en pag. Sig. TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 33

CRONOGRAMA PARA EL EJ. Bloqueo (stall) debido a ejecución en serie de E.P. k, k+1,k+2 El cronograma supone duración máxima de las UF Tipo de instr. Duración Otras duraciones INT E1 Saltos : hueco de 5 ciclos MULT (INTEGER), CMP FP E2 Fallo Cache : STORE E3 bloqueo total de 2 ciclos LOAD E5 ADDFP E7 MULFP E10 TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 34

PRESTACIONES MEDIAS familia C6000 200 MHz por 8 instr = 1600 MIPS pico (peak) Típicamente IPCreal_medio 0.6 * IPCideal Consumo medio 1300mW MIPS/mW (pico) = 1600 /1300 = 1.23 MIPS/mW MIPS/mW (real_medio) = 0.6 * 1600 /1300 = 0.74 MIPS/mW EJEMPLO Fusión bucles Importancia del balanceo de instrucciones del código frente a slots (UF) del procesador: La resolución de ecuaciones lineales por eliminación gaussiana, implica el cálculo de muchos bucles SAXPY, donde uno de los vectores es siempre el mismo (x[]). Se pide comparar para un TMS320 el empaquetamiento de 4 bucles SAXPY frente a un SAXPY de 4 sentencias donde x[] siempre es el mismo. Suponer que todo riesgo lo evita el compilador. UF agrupadas por slots. A grosso modo (más detalles en práctica 1) Slots para operaciones INT Slots para operaciones FP 2 Ld/St 2 Ld/St 2 MULT 2 MULT FP 4 INT 4 varias (2 ADDFP, otras: CMP, conversión ) for (i=0; i<n; i++) { y[i]= a * x[i] + y[i];} //SAXPY TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 35

Procesadores VLIW (actuales) - TMS C6000 DSP (Texas Instruments). Práctica - TriMedia media (NXP, antes Philips Semiconductors). p= 5 a 8 slots Tamaño de macroinstrucción variable (código comprimido) Muy parecido a VLIW con emisión totalmente estática - SHARC DSP (Analog Devices), Super Harvard Architecture Single-Chip Computer. Arq. Harvard Alta relación MFLOPS/W. Tiene un secuenciador de programa que controla el flujo de ejecución (previamente programado p ej con bucles). p= 8: 2 clusters de 4 operaciones (FP, 2 ALU, 1 Ld/St) - STMicroelectronics ST200 (Hewlett-Packard Laboratories y STMicroelectronics). p= 8: 2 clusters de 4 operaciones (FP, 2 ALU/MULT, 1 Ld/St) - Itanium (Intel, IA-64): Tres slots de 41 bits más 5 bits para especificar que UF requiere cada slot y las posibles dependencias. Tiene muchos tipos de instrucciones que resumimos aproximadamente en: Acc. Memoria /salto Cualquiera/ Inm32 Cualquiera excepto acc. mem./inm32 TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 36