TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 1 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
36
Embed
TEMA 2 ILP BASADO EN PLANIFICACIÓN ESTÁTICA DE ......TEMA 2.ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC.pág 2 2.1. CONCEPTOS FUNDAMENTALES
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 1
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.
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 3
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
MULTF F1, F2, F3
DIVF F20, F1, F4
ADDF F10, F20, F3
SF 0(R1), F10
MULTF F1, F2, F3
DIVF F2, F1, F4
ADDF F1, F2, F3
SF 0(R1), F1
Renombrado.
Ejemplo
ejercicio: señalar tipos de dependencias en código
anterior
ejercicio: ¿qué significa dinámicamente?
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 4
• 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
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) {
b[i]=-a[i]; } else {
b[i]=a[i]; }
}
ejercicio: renombrar registros para eliminar dep. ficticias en
bucle anterior. ATENCION: R1
IF ID IF ID IF ID
WB WB
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 5
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)
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 6
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 7
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 8
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)
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 13
• 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 14
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: ai+k=f(ai) ) 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 ai+k=f(ai) , 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) {
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 15
• 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];
instr overhead (contendrán el salto a etiqueta Bucle_sw_pp)
Epílogo: SDM-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 19
Software pipelining más desenrollado Desenrollando 2 iteraciones (no se dibujan las instr overead por simplificar el esquema) PRÓLOGO BUCLE EPÍLOGO
LD0
LD1 MULTD0
MULTD1SD0 (K)
SD1 (K+1) ...
LD2
LD3 MULTD2 (K+2)
MULTD3 (K+3) ... SDM-4
SDM-3
LD4 (K+4)
LD5 (K+5) ... MULTDM-2
MULTDM-1SDM-2
SDM-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 20
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 Slti Rcond,Rb,0 //Rcond=1 si Rb<0
Beqz Rcond,sigue 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
Comparar si fuera así: if (Ra<0) Rb=-Ra;
else Rb=Ra;
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 21
Instrucciones Condicionadas o Predicadas (II) • Otro ejemplo: k = min(c,m,y); mínimo de 3 valores (usado en conversión RGB CMYK
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 22
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 23
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;
}
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; }
ejercicio: dibujar diagrama flujo
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 24
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 25
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) { 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?
Pensar otro ejemplo de planif. trazas
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 26
Procesadores LIW o VLIW • Reducir Ninst . “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
IF
ID EX
ME
WB EX
EX
Tiempo
IF
ID EX
ME
WB
EX
EX
IPCideal = 1 OPCideal = p OPC <= p (slots vacíos)
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)
% slots vacíos si OPC=2<p=3
OPC= operaciones/ciclo (pues CPI no indica nada)
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 27
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+CPIMEM 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 o Tecn estáticas carecen de información de ejecución (ej. BTB, RAW memoria,…)
Proponer 3 y 5 slots para balancear bien el SAXPY
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 28
¿Qué hace este código? Para dos vectores apuntados por r11, r12
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 29
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 30
ESQUEMA TMS320C67x
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 31
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)
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 33
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 ... 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.
¿Cuántos ciclos durará el FetchPacket n ?
TEMA 2. ILP BASADO EN PLANIFICACIÓN ESTÁTICA SPD: Sistemas Paralelos y Distribuidos 3º GIC. pág 34
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 35
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 36
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: