Departamento de Automática Arquitectura e Ingeniería de Computadores Tema 1 Introducción al paralelismo Prof. Dr. José Antonio de Frutos Redondo Dr. Raúl Durán Díaz Curso 2010-2011 Arquitectura e Ingeniería de Computadores Tema 1: Introducción Necesidad del paralelismo Rendimiento de computadores Taxonomía de Flynn Ley de Amdahl Procesamiento paralelo Entornos de programación paralela © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 2 Arquitectura e Ingeniería de Computadores 1. Introducción Necesidad del paralelismo Necesidad de potencia de cálculo Procesos complejos en tiempo real (control de centrales, de viajes espaciales, control de tráfico, etc.) Simulación (de moléculas, de poblaciones, predicción meteorológica, modelos mecánicos, etc.) Problemas hasta ahora no atacables (salvo por procesos heurísticos) pero resolubles. Realimentación entre los avances tecnológicos y la potencia de cálculo solicitada. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 3 Arquitectura e Ingeniería de Computadores 1. Introducción Necesidad del paralelismo Limitación de las posibilidades de la arquitectura clásica Presencia de múltiples cuellos de botella: memoria, unidades funcionales. Limitaciones físicas: límites en la capacidad de integración, crecimiento incontrolado de la disipación de calor al aumentar la frecuencia, límites en la frecuencia: (suponiendo velocidades de transición en el silicio 3·109cm/s y distancias de 1cm) fmáx = 1/1cm/3·109cm/s = 3 GHz dificultades de manejo de altas frecuencias en circuitos. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 4 Arquitectura e Ingeniería de Computadores 1. Introducción La computación paralela es inevitable Demanda de las aplicaciones: Insaciable necesidad de potencia de cálculo. Tendencias tecnológicas: De propósito general: video, gráficos, CAD, bases de datos... Científica: Biología, Química, Física, ... El número de transistores en un CI crece rápidamente. Se esperan crecimientos lentos de la frecuencia de reloj. Tendencias en arquitectura: Límites del paralelismo a nivel de instrucción (superescalares). Paralelismo a nivel de tareas la vía más adecuada. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 5 Arquitectura e Ingeniería de Computadores 1. Introducción Tendencias actuales: Los microprocesadores actuales tienen soporte para multiproceso. Aparición de estaciones de trabajo multiprocesador : Sun, SGI, HP,… Los microprocesadores del mañana serán multiprocesadores. Tendencia en las aplicaciones: Realimentación entre la demanda de potencia y la complejidad de las aplicaciones. Amplio rango de prestaciones demandadas. Progresiva potencia con coste progresivo. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 6 Arquitectura e Ingeniería de Computadores 1. Introducción Objetivo en la aplicación del paralelismo: aumentar el speedup. Speedup (p procesadores) = Rendimiento (p procesadores) Rendimiento (1 procesador) Para un problema determinado, el rendimiento es la inversa del tiempo: Speedup (p procesadores) = © J. A. de Frutos Redondo, R. Durán 2005 V1.3 Tiempo (1 procesador) Tiempo (p procesadores) 1. Introducción al paralelismo 7 Arquitectura e Ingeniería de Computadores 1. Introducción Demanda científica Fuente: Parallel Computer Architecture, Culler et al, Morgan Kauffman, 1999 © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 8 Arquitectura e Ingeniería de Computadores 1. Introducción Demanda de la Ingeniería Las grandes máquinas paralelas tienen especial aplicación en industrias tales como: Petróleo (análisis de reservas). Automóvil (simulación de choques, análisis aerodinámicos, eficiencia de la combustión). Aeronáutica (análisis de flujos de aire, eficiencia en motores, mecánica estructural, electromagnetismo). Diseño asistido por ordenador. Farmacia (modelos moleculares). Visualización (GUI, entretenimiento, representaciones virtuales). © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 9 Arquitectura e Ingeniería de Computadores 1. Introducción ¿Qué es un computador paralelo? Es un conjunto de elementos de proceso que cooperan para resolver rápidamente grandes problemas. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 10 Arquitectura e Ingeniería de Computadores 1. Introducción ¿Cómo es un computador paralelo? Algunas características generales: Asignación de recursos: Acceso a los datos, comunicación y sincronización: ¿Cuántos elementos? ¿De qué potencia? ¿Cuánta memoria? ¿Cómo cooperan los elementos y se comunican? ¿Cómo están los datos que se transmiten? ¿Cuáles son las funciones disponibles para la cooperación? Rendimiento y expansión: ¿Cómo influyen estas características en el rendimiento? ¿Cómo se puede ampliar el sistema? © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 11 Arquitectura e Ingeniería de Computadores 1. Introducción Evolución en la computación paralela AMBER programa de simulación de dinámica molecular. Punto de partida: código vectorial para Cray-1. Las gráficas corresponden a la ejecución en un Intel Paragon. 145 MFLOP en Cray90, 406 para la versión final en 128-processor Paragon, 891 en 128-processor Cray T3D. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 12 Arquitectura e Ingeniería de Computadores 1. Introducción Computación Comercial También confía en el paralelismo para aumentar sus prestaciones: Menor grado de paralelismo, pero más extendido. La potencia del computador determina el nivel de negocio que se puede manejar. Ejemplos: Bases de datos, procesos de transacciones online, apoyo a la toma de decisiones, data mining, almacenamiento de datos... TPC benchmarks (TPC-C, TPC-D) Se tienen en cuenta los criterios de escalabilidad. Rendimiento medido en transacciones por minuto (tpm). © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 13 Tendencias en Tecnología 100 Supercomputers 10 Performance Arquitectura e Ingeniería de Computadores 1. Introducción Mainframes Microprocessors Minicomputers 1 0.1 1965 1970 © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1975 1980 1985 1990 1995 1. Introducción al paralelismo 14 Arquitectura e Ingeniería de Computadores 1. Introducción Tendencias en Tecnología La potencia de los microprocesadores crece 50% - 100% por año. El número de transistores se duplica cada 2 años. El tamaño de la DRAM se cuadruplica cada 3 años. La gran actividad del mercado genera grandes inversiones en investigación. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 15 Arquitectura e Ingeniería de Computadores 1. Introducción Tendencias en Tecnología 180 160 140 DEC 120 alpha 100 IBM 80 RS6000 60 540 40 Sun 4 20 260 MIPS M/120 MIPS Integer HP 9000 750 M2000 0 1987 1988 1989 © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1990 1991 1992 1. Introducción al paralelismo 16 FP Arquitectura e Ingeniería de Computadores 1. Introducción Tecnología: Avance básico: decremento del tamaño de separación. Circuitos más rápidos y con menor disipación de potencia. Crecimiento del tamaño de los dados. ¿Cómo utilizar más transistores? Paralelismo en el procesamiento: Elimina latencias y reduce CPI. Aumenta la utilización del procesador. $ Interconnect Ambos necesitan recursos: hay que buscar un compromiso. Tarea fundamental es la distribución de recursos, como en uniprocesadores. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 Proc Localidad en el acceso a datos: Múltiples operaciones por ciclo para reducir el CPI. 1. Introducción al paralelismo 17 Aumento de la frecuencia de reloj en un 30% al año. 1,000 Clock rate (MHz) Arquitectura e Ingeniería de Computadores 1. Introducción 100 R10000 Pentium100 i80386 i80286 10 i8086 1 i8080 i8008 i4004 0.1 1970 © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1975 1980 1985 1990 1995 2000 2005 1. Introducción al paralelismo 18 Incremento en el nº de transistores: 100 millones en el año 2000. Crecimiento más rápido que la frecuencia de reloj: 40% por año. 100,000,000 10,000,000 Transistors Arquitectura e Ingeniería de Computadores 1. Introducción 1,000,000 i80286 100,000 R10000 Pentium i80386 R3000 R2000 i8086 10,000 i8080 i8008 i4004 1,000 1970 © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1975 1980 1985 1990 1995 2000 2005 1. Introducción al paralelismo 19 Arquitectura e Ingeniería de Computadores 1. Introducción Evolución en la memoria: Mayor divergencia entre capacidad de memoria y velocidad. Las grandes memorias son lentas, mientras que los procesadores son más rápidos. Capacidad 1000x entre 1980-95, velocidad sólo 2x. Gigabit DRAM por CI. 2000, pero gap con la velocidad del procesador mucho mayor. Necesidad de transferir datos en paralelo. Necesidad de profundizar en la jerarquía de cache. ¿Cómo organizar las caches? El paralelismo aumenta el tamaño efectivo de cada nivel sin incrementar el tiempo de acceso. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 20 Arquitectura e Ingeniería de Computadores 1. Introducción Tendencias Arquitectónicas La arquitectura traslada los avances tecnológicos al rendimiento y a la capacidad. Resuelve los compromisos entre paralelismo y localidad. Microprocesadores actuales: 1/3 computación, 1/3 cache, 1/3 conexiones off-chip. Los compromisos pueden cambiar con los avances en la escala de integración y la tecnología. Entender las tendencias arquitectónicas en microprocesadores ayuda a entender las cuestiones de diseño de máquinas paralelas, muestra la integración del proceso paralelo incluso en máquinas secuenciales. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 21 Arquitectura e Ingeniería de Computadores 1. Introducción Tendencias Arquitectónicas La mayor tendencia en la generación VLSI consiste en incrementar el paralelismo Hasta 1985, paralelismo a nivel de bit: 4 bits → 8 bits → 16 bits. Desaceleración hasta 32 bits. Adopción de 64 bits actualmente; 128 bits lejano (no influye demasiado en el rendimiento). Punto de inflexión: unión de microprocesador de 32 bits y cache en un único chip. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 22 Arquitectura e Ingeniería de Computadores 1. Introducción Tendencias Arquitectónicas La mayor tendencia en la generación VLSI consiste en incrementar el paralelismo Mediados de los 80 a mediados de los 90: paralelismo a nivel de instrucción. Segmentación y conjunto de instrucciones reducido (RISC), junto con avances en compiladores. Múltiples unidades funcionales y caches en único chip => ejecución superescalar. Mayor sofisticación: ejecución fuera de orden, especulación, predicción. Para tratar con problemas de transferencia de control y latencia. Siguiente paso: paralelismo a nivel de hebras. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 23 Fases en la generación VLSI Bit-level parallelism 100,000,000 Instruction-level Thread-level (?) 10,000,000 1,000,000 R10000 Pentium Transistors Arquitectura e Ingeniería de Computadores 1. Introducción i80386 i80286 100,000 R3000 R2000 i8086 10,000 i8080 i8008 i4004 1,000 1970 1975 © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1980 1985 1990 1995 2000 2005 1. Introducción al paralelismo 24 Rendimiento de ILP 3 30 25 2.5 20 2 Speedup Fraction of total cycles (%) Arquitectura e Ingeniería de Computadores 1. Introducción 15 1.5 1 5 0.5 0 1 2 3 4 5 Number of instructions issued 6+ 0 z 0 5 10 15 Instructions issued per cycle Recursos y ancho de banda infinitos para fetch. Renombrado y perfecta predicción de saltos. Caches reales (incluye fallos en accesos). © J. A. de Frutos Redondo, R. Durán 2005 V1.3 z 10 0 z z z 1. Introducción al paralelismo 25 Arquitectura e Ingeniería de Computadores 1. Introducción Resultados de estudios de ILP Maquinas paralelas que pueden emitir 4 instrucciones por ciclo. perfect branch prediction 4x 1 branch unit/real prediction 3x 2x 1x Jouppi_89 Smith_89 Chang_91 Butler_91 Melvin_91 Estudios reales muestran un speedup de tan solo igual a 2. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 Murakami_89 1. Introducción al paralelismo 26 Arquitectura e Ingeniería de Computadores 1. Introducción Rendimiento de computadores T = I c × CPI × τ Ic CPI τ número de instrucciones del programa ciclos por instrucción ciclo de reloj Desarrollando el término de ciclos por instrucción T = Ic × ( p + m × k ) × τ p m k número de ciclos del procesador para la ejecución de la instrucción (decodificación, ejecución, etc.) número de referencias a memoria. relación en ciclos que existe entre las operaciones del procesador y las operaciones de acceso a memoria. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 27 Arquitectura e Ingeniería de Computadores 1. Introducción Rendimiento de computadores CPI Ic Instrucciones por programa p ciclos de procesador Repertorio de instrucciones x x Tecnología del compilador x x Implementación del computador y control Cache y jerarquía de memoria © J. A. de Frutos Redondo, R. Durán 2005 V1.3 m Referencias a memoria k Latencia de la memoria τ Ciclo de reloj x x x x x 1. Introducción al paralelismo 28 Arquitectura e Ingeniería de Computadores 1. Introducción Rendimiento de computadores Clasificación del rendimiento: Rendimiento teórico. Rendimiento real. Es el máximo rendimiento que se puede alcanzar (rendimiento de pico). Es el que se obtiene en un programa determinado. Rendimiento sostenido. Es el más indicativo, representa la media de rendimiento para diversas tareas. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 29 Arquitectura e Ingeniería de Computadores 1. Introducción Rendimiento de computadores Cálculo del rendimiento (en MIPS): Ic MIPS = T × 106 f f × Ic MIPS = = 6 6 CPI × 10 C × 10 C CPI = Ic © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 30 Arquitectura e Ingeniería de Computadores 1. Introducción Rendimiento de computadores Nombre Valor Rango MFLOPS megaFLOPS = 106 Rango de las workstations actuales GFLOPS gigaFLOPS = 109 Rango de los actuales supercomputadores TFLOPS teraFLOPS = 1012 Rango de los supercomputadores que están apareciendo en la actualidad PFLOPS petaFLOPS = 1015 El sueño, los ingenieros se preguntan qué problemas se podrán resolver con esta potencia EFLOPS exaFLOPS = 1018 Probablemente necesite una tecnología nueva © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 31 Arquitectura e Ingeniería de Computadores 1. Introducción Productividad (throughput) Indica el número de programas que el sistema puede ejecutar por unidad de tiempo: MIPS × 10 f Wp = = Ic I c × CPI 6 © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 32 Arquitectura e Ingeniería de Computadores 1. Introducción Ejemplo de productividad Computador f Rendimiento Tiempo de CPU VAX 11/780 5 MHz 1 MIPS 12x IBM RS/6000 25 MHz 18 MIPS x Wp = VAX 11/780 IBM RS/6000 CPI = 5/1 = 5 CPI = 25/18 = 1.3 I c = MIPS × T × 10 6 18 × 1 × 10 6 = 1. 5 r= 1 × 12 × 10 6 © J. A. de Frutos Redondo, R. Durán 2005 V1.3 MIPS × 106 f = Ic I c × CPI Relación entre la longitud de los programas: el programa ejecutado en el IBM es 1,5 veces mayor que el ejecutado en el VAX. 1. Introducción al paralelismo 33 Arquitectura e Ingeniería de Computadores 1. Introducción Taxonomía de Flynn: SISD: SIMD: un flujo de instrucciones único trabaja sobre un flujo de datos múltiple (computadores matriciales). MISD: un flujo de instrucciones único trabaja sobre flujo de datos único (arquitectura clásica, superescalares). un flujo de instrucciones múltiple trabaja sobre un flujo de datos único (clase no implementada, resultado de la clasificación). MIMD: un flujo de instrucciones múltiple trabaja sobre un flujo de datos múltiple (multiprocesadores). © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 34 Arquitectura e Ingeniería de Computadores 1. Introducción Taxonomía de Flynn UC UP Dato SISD UC UP UC UP UC UP Dato MISD UC UP Dato UC UP Dato UP Dato UC UP Dato UP Dato UC UP Dato SIMD © J. A. de Frutos Redondo, R. Durán 2005 V1.3 MIMD 1. Introducción al paralelismo 35 Arquitectura e Ingeniería de Computadores 1. Introducción Ley de Amdahl W +Wn Sn = l W +Wn n l Sn: Wl: Wn: n: mejora del rendimiento (speedup) parte no paralelizable parte paralelizable número de procesadores © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 36 Arquitectura e Ingeniería de Computadores 1. Introducción Ley de Amdahl 8% Wl Porcentaje de la parte no paralelizable sobre el total de la carga Carga Wn Nº EPs 14% Wl 20% Wl 25% 29% 33% Wl Wn Wl Wl Wn W Wn W n n 1 © J. A. de Frutos Redondo, R. Durán 2005 V1.3 2 3 4 5 6 1. Introducción al paralelismo 37 Arquitectura e Ingeniería de Computadores 1. Introducción Paralelismo: Conjunto de tareas independientes entre sí susceptibles de ser llevadas a cabo de forma simultánea. Tipos de paralelismo: en cuanto al hardware: Monoprocesadores Segmentación División funcional Multiprocesadores SIMD MIMD Acoplo fuerte Acoplo moderado Acoplo débil © J. A. de Frutos Redondo, R. Durán 2005 V1.3 en cuanto al software: SPMD: El mismo programa es cargado en múltiples procesadores y se ejecuta sobre conjuntos de datos distintos. MPMD: Cada procesador ejecuta programas distintos. Esta estructura suele ser del tipo maestro-esclavo en la que un procesador coordina el trabajo del resto. 1. Introducción al paralelismo 38 Arquitectura e Ingeniería de Computadores 1. Introducción Niveles de paralelismo en un programa Aumento de la necesidad de comunicación y planificación Programa, trabajo (job) Módulo, proceso Función, rutina, tarea (task) Mayor grado de paralelismo Paralelismo de grano medio Puede ser necesario el programador, con ayuda del compilador Bucle Instrucción, sentencia © J. A. de Frutos Redondo, R. Durán 2005 V1.3 Paralelismo de grano grueso Explotado por el diseñador del algoritmo o el programador Paralelismo de grano fino Explotado por el compilador o el hardware 1. Introducción al paralelismo 39 Arquitectura e Ingeniería de Computadores 1. Introducción Entornos de programación paralela El aprovechamiento de un computador paralelo depende, en gran medida, del entorno de programación en dos facetas: Las herramientas de programación. El sistema operativo. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 40 Arquitectura e Ingeniería de Computadores 1. Introducción Enfoques del paralelismo en computadores paralelos: Paralelismo implícito: se programa en lenguaje secuencial y el compilador se encarga de paralelizar y asignar recursos. Pequeño aprovechamiento (depende de la inteligencia del compilador). El trabajo del programador es fácil. Aprovecha todo el código secuencial existente. Paralelismo explícito: se usan dialectos paralelos de programación. Mejor aprovechamiento de las posibilidades paralelas de la máquina. Más trabajo para el programador. © J. A. de Frutos Redondo, R. Durán 2005 V1.3 1. Introducción al paralelismo 41