Planificación estática

Documentos relacionados
Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Procesadores segmentados. El DLX.

Plataformas de soporte computacional: arquitecturas avanzadas,

CAPÍTULO II MARCO TEÓRICO ADMNISTRACIÓN DE PROYECTOS CON CPM

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

GRAFOS. Prof. Ing. M.Sc. Fulbia Torres

Q-flow Patrones básicos de Workflow

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Introducción FACULTAD DE INGENIERÍA. Ordenación

Capitulo V Administración de memoria

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Ejercicios. 5.2 [5] < 5.3> Este ejercicio es similar al 5.1, pero ahora considere los fallos causados por permanecer en 1 (la señal es siempre 1).

Tema 2. Diseño del repertorio de instrucciones

PROCESADORES DE EMISIÓN MÚLTIPLE

REDISTRIBUCION DE TAREAS POR SOBREASIGNACION DE RECURSOS 1

Operación de Microsoft Word

Centro de Capacitación en Informática

Bases de datos en Excel

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

Práctica 1 - Pista de Carreras Programación II

ZCARTAS: Iniciación a la suma y resta de números enteros Introducción Actividad 1: Escenario con cartas numeradas desde -2 hasta 2...

Plan de Evaluación. Parcial I...20% Taller I... 5% Parcial II...20% Taller II...5% Parcial III...20% Exposición...10% Proyecto...15% Asistencia...

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

Práctica del paso de generación de Leads

Prácticas PGSI. Práctica 1. Introducción a la Gestión de Proyectos con Project 2000

Procesadores Vectoriales

La pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición.

Campos de tareas. Costo real (campo de tareas) Duración real (campo de tareas) Fin real (campo de tareas)

TEMA 4: TÉCNICAS DE PLANIFICACIÓN DE PROYECTOS

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

Procesadores Superescalares: Paralelismo Implícito a Nivel de Instrucción

Cifras significativas e incertidumbre en las mediciones

Elementos de Microsoft Word

Acronis License Server. Guía del usuario

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Estructuras de Control - Diagrama de Flujo

Web Publishing con LabVIEW (I)

GENERACIÓN DE TRANSFERENCIAS

Agradecimiento: A Javier Lomelín Urrea por su dedicación y esmero en este proyecto. Manuel Fernando Guzmán Muñoz Presidente OMIJal

Selección de los puntos de montaje

EJERCICIOS SOBRE : DIVISIBILIDAD

Enunciado unidades fraccionarias fracción fracciones equivalentes comparar operaciones aritméticas fracciones propias Qué hacer deslizador vertical

1. Descripción y objetivos

Creación de Funciones de Conducción

Operación Microsoft Access 97


Escuela Politécnica Superior. Planificación y Control de Proyectos. Capítulo 11. daniel.tapias@uam.es. Dr. Daniel Tapias Curso 2014 / 15 PROYECTOS

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

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

WinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario.

Pipelining o Segmentación de Instrucciones

Instructivo de Microsoft Excel 2003

Módulo II - PowerPoint

Planificación, Gestión y Desarrollo de Proyectos

Capítulo 4 Procesos con estructuras de repetición

Conclusiones. Particionado Consciente de los Datos

Test PMP - C12 _ Cuál de los siguientes es una ventaja de la centralización de las compras?

Movimiento a través de una. José San Martín

Estimado usuario. Tabla de Contenidos

U.T. 2 Planificación de Proyectos

COPIAS DE SEGURIDAD. Ver. 1.0

Copia de Seguridad en windows

USO ACADÉMICO DE HOJAS ELECTRÓNICAS. Segunda Sesión

Operación de Microsoft Word

Uso del programa CALC

Cuando creamos una presentación podemos después modificarla. estas operaciones que siendo tan sencillas tienen una gran utilidad.

2.4. Modos de direccionamiento Distintas formas que tiene la arquitectura para especificar la ubicación de los operandos.

Estructuras de Control - Diagrama de Flujo

Capítulo 12: Indexación y asociación

Resolución de Problemas

Gestión de Retales WhitePaper Noviembre de 2009

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

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Capítulo 1. MANUAL DE USUARIO

Manual de Instalación. Sistema FECU S.A.

PS.Vending Almacén Pocket PC

ESTRUCTURA DE DATOS: ARREGLOS

Cómo?: Resolviendo el sistema lineal homógeneo que satisfacen las componentes de cualquier vector de S. x4 = x 1 x 3 = x 2 x 1

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

Tema 3. Medidas de tendencia central Introducción. Contenido

Otras medidas descriptivas usuales

Manual básico de Robomid

Tema IV. Unidad aritmético lógica

Delimitar tareas en Project 2010

Universidad Nacional de Quilmes Ing. en Automatización y Control Industrial Cátedra: Visión Artificial Agosto de 2005

Procesadores Superescalares: Paralelismo Explícito a Nivel de Instrucción

INDICE. 1. Introducción El panel Entities view El panel grafico Barra de botones Botones de Behavior...

TEMA 5: HOJAS DE CÁLCULO. Edición de hojas de cálculo con OpenOffice Calc

CREDITO TAXI PLAN CON SISTEMA GNV

Crear presentaciones con Impress de OpenOffice

MANUAL DE USUARIO Y EJEMPLO DE UTILIZACIÓN HERRAMIENTA DLP-DELPHI LEARNING PACKAGE

Planificación de Procesos. Módulo 5. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco

Tema 11: Sistemas combinacionales

INTRODUCCIÓN COMPONENTES

APUNTES DE WINDOWS. Windows y sus Elementos INSTITUTO DE CAPACITACIÓN PROFESIONAL. Elementos de Windows

Capítulo 0. Introducción.

Test de Prueba PMP : Marco de Referencia Gestión de Proyecto

Arquitectura de Computadores

Ministerio de Educación. Diseño de Presentaciones en la Enseñanza. Módulo 9: Imprimir

Transcripción:

Planificación estática Planificación de bloques básicos Planificación de bucles Planificación global Serafín Benito AIC: Planificación estática 1

Planificación de bloques básicos.. Técnica sencilla. Eficiencia limitada por El pequeño tamaño de los bloques básicos Tamaño medio (en MIPS 3000): 8 instrucciones en (7) programas de propósito general 32 instrucciones en (3) programas de orientación científica Las verdaderas dependencias de datos (RAW) Las otras se pueden eliminar redenominando registros Ganancia en velocidad que proporciona Menor que 2 en programas de propósito general Menor que 4 en programas de orientación científica Serafín Benito AIC: Planificación estática 2

Planificación de bloques básicos: grafo de dependencias de datos (DDG) Muestra las precedencias impuestas por ese tipo de dependencias A la derecha se tiene el grafo que corresponde al bloque básico i1: ini: add r3, r1, r2 i2: sub r4, r1, r2 i3: mul r5, r3, r4 i4: mul r7, r6, r6 i5: sub r8, r7, r5 i6: jn eti En forma texto: {(i1,i3), (i2,i3), (i3,i5), (i4,i5), (i5,i6)} i1 i3 i5 i6 i2 i4 Serafín Benito AIC: Planificación estática 3

Planificación de bloques básicos.. La construcción del DDG es la tarea del planificador que más tiempo consume n instrucciones => n*(n-1)/2 pares de instrucciones por analizar Tipos de planificadores de bloques básicos Planificadores de listas (list schedulers) Los más usados Planificadores basados en criterios Planifican, en primer lugar el primer elemento (la primera instrucción) que mejor cumpla una secuencia de criterios Serafín Benito AIC: Planificación estática 4

Planificadores de listas Los elementos (instrucciones en nuestro caso) se planifican en pasos. En cada paso 1º/ Regla de selección para crear una lista de elementos elegibles 2º/ Regla para elegir de la lista anterior el mejor conjunto de elementos (una instrucción en nuestro caso) para planificar en este paso Serafín Benito AIC: Planificación estática 5

Ejemplo de planificador de listas: algoritmo de Warren.. En cada paso, sobre el grafo de dependencias de datos Crear el conjunto de nodos elegibles. Es elegible Todo nodo que no tienen predecesor Aquel nodo cuyos predecesores no bloquean su ejecución porque ya han producido los datos y están disponibles Esta condición vendrá dada por: valor del contador de tiempo tiempo más temprano de ejecución (v. trp. sgte.) Serafín Benito AIC: Planificación estática 6

Ejemplo de planificador de listas: algoritmo de Warren.. Elegir el que se va a planificar y quitarlo del grafo El que está en el camino crítico El camino más largo hasta el final del bloque básico La longitud del camino se calcula sumando las latencias de ejecución de los arcos del camino Aumentar en 1 el contador de tiempo Calcular el tiempo más temprano de ejecución del nodo sucesor al que se ha quitado del grafo Sumar el contador de tiempo (CT) y la latencia entre el nodo suprimido y su sucesor En futuros pasos el nodo será elegible si valor del CT tiempo más temprano de ejecución Serafín Benito AIC: Planificación estática 7

Ejemplo de planificador de listas: algoritmo de Warren.. Suponemos que al siguiente código i1: l r10, b (r20) i2: l r11, c (r20) i3: add r12, r10, r11 i4: l r13, d (r20) i5: sub r14, r12, r13 i6: st r14, a (r20) i7: l r15, e (r20) i8: cmp r16, r15, 0 i9: bc r16,... corresponde el grafo de dependencias de datos de la derecha En los arcos del grafo se indican las latencias Aunque no hay dependencia entre i6 e i9, i9 debe ser la última instrucción (si no no estaríamos en un bloque básico) i1 1 1 i3 i2 0 1 i5 i6 i4 0 1 0 3 i9 i7 i8 Serafín Benito AIC: Planificación estática 8

Ejemplo de planificador de listas: algoritmo de Warren.. Contador de tiempo = 0 Paso1: Nodos elegibles: los que no tienen predecesor: {i1, i2, i4, i7} Longitudes respectivas caminos de estos nodos: 1, 1, 1, 4 => Nodo planificado i7 CT = CT+1 (CT=1) Tiempo más temprano de ejecución de i8 (sucesor de i7 en el grafo) = CT+1 = 2 i1 i2 1 1 i3 0 1 i4 i5 0 TTE=2 i6 0 3 i8 i9 Serafín Benito AIC: Planificación estática 9

Ejemplo de planificador de listas: algoritmo de Warren.. Paso 2: Nodos elegibles {i1, i2, i4} (i8 no es elegible porque CT=1 < TTE(i8)=2) Longitudes respectivas caminos: 1, 1, 1 => Nodo planificado i1 (se deshace el empate escogiendo el primero) CT = 2 TTE=3 i3 1 i2 i4 0 1 i5 0 TTE=2 i6 i8 0 3 TTE(i3) = CT+latencia(i1,i3) = = 2+1 = 3 i9 Serafín Benito AIC: Planificación estática 10

Ejemplo de planificador de listas: algoritmo de Warren.. Paso 3: Nodos elegibles {i2, i4, i8} (CT=2 TTE(i8)=2) Longitudes respectivas caminos: 1, 1, 3 => Nodo planificado i8 TTE=3 i3 i2 1 0 1 i5 i4 CT = 3 0 TTE(i9) = CT+latencia(i8,i9) = = 3+3 = 6 i6 0 i9 TTE=6 Serafín Benito AIC: Planificación estática 11

Ejemplo de planificador de listas: algoritmo de Warren En pasos sucesivos se planifican, por este orden: i2, i4, i3, i5, i6, i9. Por tanto, el bloque básico planificado queda i7: l r15, e (r20) i1: l r10, b (r20) i8: cmp r16, r15, 0 i2: l r11, c (r20) i4: l r13, d (r20) i3: add r12, r10, r11 i5: sub r14, r12, r13 i6: st r14, a (r20) i9: bc r16,... Este bloque consume 9 ciclos y el original 15. Así pues se ha producido una mejora de 15/9 = 1,67 Serafín Benito AIC: Planificación estática 12

Planificación de bloques básicos Los planificadores de bloques básicos son usados por procesadores encauzados y por los primeros procesadores superescalares Los VLIW no los utilizan porque necesitan una planificación más ambiciosa, es decir: Planificación de bucles y Planificación global Serafín Benito AIC: Planificación estática 13

Planificación de bucles Los bucles son la principal fuente de paralelismo de instrucciones Dos técnicas fundamentales para planificar bucles Desenrollamiento de bucles Interviene como componente de métodos de planificación más sofisticados Encauzamiento software y planificación de trazas Encauzamiento software (software pipelining) Técnica estándar de planificación de bucles Serafín Benito AIC: Planificación estática 14

Latencias supuestas Latencias supuestas, en lo sucesivo, para el MIPS Instrucción que produce el resultado Operación FP Operación FP Load doble Load doble Load entera Hueco de retardo Instrucción que utiliza el resultado Operación FP Store doble Operación FP Store doble Operación entera Cualquiera Latencia (en ciclos de roloj) 3 2 1 0 1 1 Serafín Benito AIC: Planificación estática 15

Ejemplo de bucle por desenrollar Suma de un escalar S a un vector X (valores en doble precisión): for (i=1, i<=1000, i++) X[i] = X[i] +S Supuestos: El escalar, S, está contenido en F2 (F2#F3) Inicialmente R1 apunta al primer componente del vector Por simplicidad, 8(R2) apunta al último componente Serafín Benito AIC: Planificación estática 16

Compilación básica del bucle ejemplo Compilación básica (supuestos pág. anterior) Ciclo de emisión (relativo) loop: L.D F0, 0(R1) 1 ADD.D F4, F0, F2 3 S.D F4, 0(R1) 6 DADDUI R1, R1, #-8 7 BNE R1, R2, loop 9 NOP 10 Serafín Benito AIC: Planificación estática 17

Planificación básica del bucle ejemplo Ciclo de emisión (relativo) loop: L.D F0, 0(R1) 1 DADDUI R1, R1, #-8 2 ADD.D F4, F0, F2 3 BNE R1, R2, loop 4 S.D F4, 8(R1) 6 S.D al hueco de retardo Al quedar detrás de DADDUI el desplazamiento pasa a ser 8 S.D se emite un ciclo más tarde por su dependencia con ADD.D DADDUI se coloca antes de ADD.D para conseguir: Eliminar la parada de ADD.D por su dependencia con L.D Eliminar la parada de BNE por su dependencia con DADDUI Serafín Benito AIC: Planificación estática 18

Desenrollamiento de bucles Idea: Concatenar varios cuerpos del bucle en un bloque básico Ventajas: Más instrucciones en el bloque => más posibilidades de planificarlo => menos paradas Menos pasadas por el nuevo bucle => ahorro instrucciones de control del bucle (en el ej., DADDUI y BNE) Inconvenientes: Se necesitan más registros No hay que utilizar los mismos en cada copia del bucle si no queremos perder las posibilidades de planificarlo Mayor tamaño de código Serafín Benito AIC: Planificación estática 19

Bucle desenrollado sin planificar y planificado Bucle desenrollado no planificado Ciclo de emisión loop: L.D F0, 0(R1) 1 ADD.D F4, F0, F2 3 S.D F4, 0(R1) 6 L.D F6, -8(R1) 7 ADD.D F8, F6, F2 9 S.D F8, -8(R1) 12 L.D F10, -16(R1) 13 ADD.D F12, F10, F2 15 S.D F12, -16(R1) 18 L.D F14, -24(R1) 19 ADD.D F16, F14, F2 21 SD F16, -24(R1) 24 DADDUI R1, R1, #-32 25 BNE R1, R2, loop 27 NOP 28 Bucle desenrollado y planificado Ciclo de emisión loop: L.D F0, 0(R1) 1 L.D F6, -8(R1) 2 L.D F10, -16(R1) 3 L.D F14, -24(R1) 4 ADD.D F4, F0, F2 5 ADD.D F8, F6, F2 6 ADD.D F12, F10, F2 7 ADD.D F16, F14, F2 8 S.D F4, 0(R1) 9 S.D F8, -8(R1) 10 DADDUI R1, R1, #-32 11 S.D F12, 16(R1) 12 BNE R1, R2, loop 13 SD F16, 8(R1) 14 Serafín Benito AIC: Planificación estática 20

Encauzamiento software.. Tomemos Cuerpo del bucle fload f10, 0 (r2) fmul f10, f2, f10 fstore 200(r2), f10 addi r2, r2, 1 Procesador ILP: Unidades funcionales separadas para FP, FX (operaciones enteras), load y store En todas el intervalo de iniciación es 1 ciclo Latencias por dependencias de datos: fmul, dos ciclos; el resto cero ciclos Ejecución de una iteración Ciclo Instrucción c fload f10, 0(r2) c+1 fmul f10, f2, f10 c+2 addi r2, r2, 1 c+3 nop c+4 fstore 199(r2), f10 La siguiente iteración puede empezar en el ciclo c+1 c+1 fload f11, 0(r2) c+2 fmul f11, f2, f11 c+3 addi r2, r2, 1 c+4 nop c+5 fstore 199(r2), f11 Serafín Benito AIC: Planificación estática 21

Encauzamiento software.. El resultado para 7 pasadas será Ciclo Iteración 1 2 3 4 5 6 7 c fload c+1 fmult fload c+2 addi fmult fload c+3 nop addi fmult fload c+4 fstore nop addi fmult fload c+5 fstore nop addi fmult fload c+6 fstore nop addi fmult fload c+7 fstore nop addi fmult c+8 fstore nop addi c+9 fstore nop c+10 fstore Serafín Benito AIC: Planificación estática 22

Encauzamiento software.. Los ciclos c+4, c+5 y c+6: Utilizan todo el paralelismo disponible Siguen un patrón repetitivo => Pueden ser reemplazados por un bucle El código del encauzamiento software queda dividido en tres partes Código de inicio (start-up code, prologue o prelude) Bucle del patrón repetitivo Código de finalización (epilogue o postlude) Serafín Benito AIC: Planificación estática 23

Encauzamiento software Problema principal: Encontrar el patrón repetitivo que pueda ejecutarse en el menor número de ciclos No siempre es tan sencillo como en el ejemplo anterior Un desenrollamiento previo del bucle suele ser fundamental para un encauzamiento software más efectivo Serafín Benito AIC: Planificación estática 24

Planificación global Planificación más allá de los límites de los bloques básicos y de los bucles Tareas propias de la planificación global Planificación con movimiento de código atravesando los límites de los bloques básicos Planificación de bucles Manejar llamadas a procedimientos dentro de bucles, manejar dependencias de control, dar soporte a la política de emisión de instrucciones (típico de procesadores superescalares), etc. Serafín Benito AIC: Planificación estática 25

Técnica ejemplo de planificación global: planificación de trazas 1º: selección de trazas Traza: posible secuencia de ejecución de operaciones dentro de un bucle (puede incluir bifurcaciones y saltos) Se selecciona la traza más probable; después, la siguiente más probable, etc. hasta que toda operación del programa pertenezca a alguna traza seleccionada 2º: compactación de trazas Las operaciones de cada traza se paralelizan agrupándose en un número menor de instrucciones grandes (VLIW) Serafín Benito AIC: Planificación estática 26

Ejemplo de selección de una traza A[i] := A[i]+B[i] V F A[i] = 0 B[i] :=... C[i] :=... X Se ha seleccionado la traza con fondo azul porque se prevee más probable que la condición sea verdadera Una vez seleccionada hay que compactar la traza La compactación supone mover código hacia arriba Serafín Benito AIC: Planificación estática 27

Movimiento de código en planificación de trazas A[i] := A[i]+B[i] C[i] :=... V F A[i] = 0 Si C[i] :=... no tiene dependencias, puede colocarse antes de la bifurcación B[i] :=... X Serafín Benito AIC: Planificación estática 28

Movimiento de código en planificación de trazas A[i] := A[i]+B[i] B[i] := B[i]+1 F A[i] = 0 V C[i] :=... B[i] := B[i]-1 X Si B[i] :=... no tiene dependencias: Se puede colocar antes de la bifurcación Movimiento especulativo de código: sólo útil si previsión acertada Suele ser preciso añadir código compensatorio (B[i] := B[i]-1) por si se sigue el camino no previsto (bookkeeping code) Serafín Benito AIC: Planificación estática 29

Planificación de trazas: principales dificultades El obstáculo más importante para mover instrucciones son las dependencias de datos RAW Los movimientos especulativos de código son problemáticos Provocan una considerable expansión de código Es clave para la mejora del rendimiento que las trazas previstas correspondan a los caminos que sigue el programa un alto porcentaje de veces En los caminos no previstos el rendimiento se degrada por la ejecución del código compensatorio Surgen dificultades cuando el código que se mueve puede provocar interrupción (el código compensatorio no las resuelve) Cuando no hay suficiente paralelismo en las trazas un desenrollamiento de bucles puede suministrar ese paralelismo Serafín Benito AIC: Planificación estática 30