Arquitectura de Computadores: Tema 4: Multiprocesadores Índice 1. Por qué ejecución paralela 2. Arquitecturas paralelas: clasificación 3. Multiprocesadores de memoria compartida 4. Memoria entrelazada 5 5. B Buses de d ciclo i l partido tid 6. Coherencia de cachés 7. Sincronización AC: Multiprocesadores 2 Bibliografía Baer, J.L. Microprocessor Architecture. From simple pipelines to chip multiprocessors. 2010 Hennessy, J.L.; Patterson, D. A. Computer Architecture: A quantitative Approach. 4ª, 5ª ed Stallings, W. Computer Organization and Architecture Designing for Performance Architecture. Performance. 8 8ª, 9 9ª ed Culler D.E, J.P. Singh. Parallel Computer Architecture. A hardware/software approach. 1999 AC: Multiprocesadores 3 Evolución de procesadores AC: Multiprocesadores 4 Por qué ejecución paralela ¿Es la ejecución ¿ j paralela p una necesidad? A) Demanda de cómputo cómp to B) Logros y límites tecnológicos C) Logros en la arquitectura D) Aspectos económicos AC: Multiprocesadores 5 A)) Demanda de cómputo p Tradición en Ciencia y en Ingeniería: ● Hacer teoría o diseño sobre el papel ● Realizar experimentos p o construir el sistema: Difícil, lento, caro, ¡peligroso! ● Enfoque q que q p permite la Informática: Modelar los fenómenos físicos y los sistemas que se experimentan de manera fidedigna a través de métodos numéricos eficientes Necesidad de capacidad p de almacenamiento y de potencia de cálculo suficientes AC: Multiprocesadores 6 A) Demanda de cómputo: Algunos ejemplos Modelización y predicción meteorológica y climática Modelización y procesamiento en astrofísica (IAC) Ciencia Modelización en la industria farmacéutica, en medicina: p.ej., experimentación de nuevas válvulas cardiacas Genoma humano Test de seguridad en automoción Diseño de estructuras en arquitectura e ingeniería Di ñ y validación Diseño lid ió d de semiconductores i d t Computation fluid dynamics (diseño de aviones) Modelización en finanzas y economía Procesamiento de transacciones, servicios web. Armas nucleares (test mediante simulaciones) simulaciones), criptografía .. Procesamiento de voz y de imágenes Ingeniería Negocios Defensa Aplicaciones “insaciables”: escalan más rápido que el HW AC: Multiprocesadores 7 What drives HPC ? --- “The Need for Speed...” Computational Needs of Technical, Scientific, Digital Media and Business Applications Approach or Exceed the Petaflops/s Range CFD Wing Wi Simulation Si l ti 512x64x256 Grid (8.3 x10e6 mesh points) 5000 FLOPS per mesh point, 5000 ti time steps/cycles t / l 2.15x10e14 FLOPS Source: A. Jameson, et al CFD Full Plane Simulation 512x64x256 Grid (3.5 x10e17 mesh points) 5000 FLOPS per mesh point, 5000 time steps/cycles 8.7x10e24 FLOPS Digital Movies and Special Effects ~1e14 1 14 FLOP FLOPs per fframe 50 frames/sec 90 minute movie - 2.7e19 FLOPs ~ 150 days on 2000 1GFLOP/s CPUs Source: Pixar AC: Multiprocesadores 8 B) Logros y limitaciones tecnológicas ¿Hasta dónde puede seguir aumentado la capacidad id d d de ejecución j ió d de llas CPU CPUs? ? Nº transistores N velocidad l id d d de reloj l j AC: Multiprocesadores 9 Número de transistores AC: Multiprocesadores 10 Velocidad de reloj AC: Multiprocesadores 11 Límites físicos Más frecuencia implica más densidad de potencia y por lo tanto tanto, más calor calor. P CfVdd 2 Velocidad de la luz (30cm/ns) 3GHz 10cm/ciclo Ha sido necesario abordar el problema de seguir aumentando las prestaciones, desde el punto de vista de Organización y Arquitectura: - Cachés: más y de mayor capacidad - Paralelismo AC: Multiprocesadores 12 C) Logros en la arquitectura Evolución de los microprocesadores (ligado al desarrollo VLSI): “paralelismo interno” ● Hasta 1985: paralelismo entre bits (bit level parallelism): 4 bits 8 bits 16 bits 32 bits los 32 bits representaron un punto de inflexión Ahora 64 (¿futuro 128 bits?) ● Mediados de los 80s hasta la actualidad: paralelismo entre las instrucciones (ILP): (pipelining + RISC) + mejoras en los compiladores varias unidades funcionales + cachés ejecución fuera de orden y superescalar sofisticación en el control: Predicción de saltos tado Dificil c pasa pasar de 2 instrucciones/ciclo st ucc o es/c c o -> Limitado: superescales de 4-6 vías AC: Multiprocesadores 13 C) Logros en la arquitectura En la actualidad: ● ● Paralelismo a nivel de threads: Multithreading Varios procesadores en un solo chip: Multicore (algunos con SMT) ARM11 MPCore (1 .. 4 cores) 32+32KB i Core Duo (2 cores) 32+32KB 2MB i Core i7 ((4 .. 6 cores + SMT)) 32+32KB 256KB 12MB AC: Multiprocesadores 14 C) Logros en la arquitectura Últimas aportaciones: Coprocesadores ● MIC (Many Integrated Cores): Tarjetas con muchos cores Ejemplo: Intel Xeon Phi: 60 cores, cores 240 threads Actúa de coprocesador o sólo Unidades de procesamiento vectorial Tiene instrucciones vectoriales de 512 bits Hasta H t un Teraflop T fl en doble d bl precisión i ió AC: Multiprocesadores 15 C) Logros en la arquitectura Ultimas aportaciones: Coprocesadores ● GPU: Graphics Processing Unit La CPU no desaparece La GPU o GPUs actúan de coprocesadores matemáticos, con muchas unidades funcionales en cada uno ¡¡128 -1.536 ALUs por GPU!! Una CPU puede “gobernar” varias GPUs 3 Teraflops en simple precisión y un 1 Teraflop en doble precisión. precisión Difíciles de programar AC: Multiprocesadores 16 D) Aspectos económicos ● ● Los microprocesadores de propósito general no sólo son rápidos, sino que también son baratos - Coste de desarrollo alto, pero se venden muchos (economía d escala) de l ) - Disponen de facilidades para construir Multiprocesadores (Coherencia (Co e e c a de cac cachés, és, cciclos c os espec especiales a es de bus) Los constructores de computadores (HP, IBM, SGI, Sun, etc.) t ) fabrican f bi versiones i multiprocesador lti d d de sus máquinas á i con un sobreprecio muy pequeño AC: Multiprocesadores 17 Medidas de prestaciones Tiempo - Ganancia o Speedup Throughput: ??/T ((?? = operaciones, p , instrucciones,, transacciones …)) Otras medidas: - B Benchmarks h k (SPEC (SPEC, Li Linpack, k …)) AC: Multiprocesadores 18 Speedup y Eficiencia Speedup (ganancia o aceleración): T original Speedup T nuevo En el caso particular de un sistema con p procesadores o cores: T (1) Speedup ( p ) T ( p) Ideal: lineal: speedup (p) = p Eficiencia: Speedup ( p ) E ( p) p Id l E(p) Ideal: E( ) = 1 (100% de d utilización) tili ió ) AC: Multiprocesadores 19 Ley de Amdahl Ley de Amdahl: El speedup d teórico ó estáá limitado l d por la l fracción f ó secuenciall s del programa (no “paralelizable”) T (1) Speedup p p ( p) T ( p) T (1) 1 1 1 s s 1 s s T (1) s p p AC: Multiprocesadores 20 Benchmarking Ejecución de programas estándar para comparar computadores o predecir su rendimiento. Benchmarks Programas g estándar que simulan una carga g g genérica. SPEC (www.spec.org) ● Conjunto de programas para medir el rendimiento de componentes o subsistemas. CPU, memoria, E/S, servidor de ficheros ● Linpack Programa de álgebra lineal creado por J.Dongarra en 1976. Uso intensivo de operaciones de coma flotante. Evaluación de sistemas científicos y de ingeniería Se S utiliza ili para establecer bl ell ránking á ki Top500 T 00 AC: Multiprocesadores 21 SPEC CPU: ejemplo AC: Multiprocesadores 22 Arquitecturas q paralelas: p clasificación-1 Taxonomía de Flynn (1972). Relación entre instrucciones y d t de datos d un programa: ● SISD (Single instruction Single data) Arquitectura Von Neumann (Monoprocesadores) ● SIMD ((Single g Instruction,, Multiple p Data)) Arquitecturas vectoriales Extensiones multimedia (Ej: MMX, SSE, AVX, AltiVec) ● MISD (Multiple Instruction, Single Data) Ningún computador comercial construído ● MIMD (Multiple Instruction, Multiple Data) Multiprocesadores M lti d AC: Multiprocesadores 23 Taxonomía de Flynn y Data memoory SIMD PE Instruction memory PE PE PE MISD Instruction memory Data meemory Data meemory Instruction memory MIMD Data memoory D SISD PE PE Instruction memory PE PE PE AC: Multiprocesadores 24 Arquitecturas paralelas: clasificación-2 [Sima97] ILPs SMT Pipeline AC: Multiprocesadores 25 Procesadores vectoriales Idea: los operandos de las instrucciones son vectores las Unidades Funcionales operan (en paralelo) con los componentes del vector cada instrucción vectorial hace lo que se haría con un bucle Uso: ● fueron los grandes “supercomputadores” en el pasado [Earth Simulator] ● útiles para aplicaciones científicas AC: Multiprocesadores 26 Procesadores vectoriales: Arquitectura básica AC: Multiprocesadores 27 Procesadores vectoriales Ejemplo de código vectorial SAXPY: Y = A*X+Y for (i (i=0; 0; i<N; i++) Versión escalar: … lloop: ldf f1, (r2) mulf f2, f1, f0 loadf f3, (r4) addf f4, f2, f3 stf f4, (r4) addi r2,r2,#4 addi r4,r4,#4 addi r1,r1,#-1 r1,r1,# 1 bnz r1,loop: Y[i] = a*X[i] + Y[i] ; load X(i) ; a*X(i) ; load Y(i) ; a*X(i)+Y(i) ; store en Y(i) ; incr. ptr. X(i) ; incr. ptr. Y(i) ; dec. contador ; branch to loop Versión vectorial: … LV v1, (r2) MULVS v2,, v1,, f0 ; load X(i..N) ; a*X(i..N)) ( )) LV v3,(r4) ADDVV v4, v2, v3 SV v4, v4 (r4) ; load Y(i..N) ; a*X(i..N)+Y(i..N) ; store en Y(i..N) Y(i N) ... AC: Multiprocesadores 28 Instrucciones SIMD Ejemplos: ● Intel MMX (1996) - 8 registros de 64 bits: 8 enteros de 8 bits ó 4 de 16 bits ● Streaming SIMD Extensions (SSE) (1999) - registros de 128 bits 8 enteros de 16 bits 4 enteros/c.f de 32 bits ó 2 enteros/c.f de 64 bits ● Advanced Vector Extensions (AVX 2010) - registros de 256 bits 4 enteros/c.f enteros/c f de 64 bits ● futuras extensiones a 512 y 1.024 bits Initial Many Core Instructions (IMIC de intel Xeon Phi) - registros de 512 bits AC: Multiprocesadores 29 Arquitecturas MIMD Conjunto de procesadores que ejecutan simultáneamente flujos de instrucciones diferentes con conjuntos de datos diferentes. Clasificación: ● ● Memoria compartida p ((multiprocesadores) p ) - UMA (Uniform Memory Access) o SMP (Symmetric Multiprocessor) - NUMA (NonUniform Memory Access) Memoria distribuída (multicomputadores) - Clusters, Grid, Cloud Características: ● Funcionamiento asíncrono ● Grado de acoplamiento: Débil, moderado, fuerte ● Escalabilidad AC: Multiprocesadores 30 MIMD de memoria compartida UMA o SMP Procesador Caché(s) Procesador Caché(s) Procesador ……. Características ● Dos o más procesadores, procesadores en general, idénticos ● Los procesadores son microprocesadores i d comerciales ● Comunicación entre procesos (hilos) a través de variables compartidas (Mp) mediante ld/st ● Latencia Mp uniforme ● Baja escalabilidad (docenas) ● Único S.O. ● Los multicore actuales Caché(s) Bus u otra red de interconexión Memoria principal Sist.de E/S AC: Multiprocesadores 31 MIMD de memoria compartida NUMA Procesador Caché(s) Memoria ● Distribución física de la memoria entre los procesadores ● Tacceso a memoria dependiente de la ubicación del dato ● Red más compleja que bus ● Mayor escalabilidad M l bilid d (pocos miles) Procesador Procesador Caché(s) Características ……. Caché(s) Memoria Memoria Red de interconexión Sist E/S Sist. AC: Multiprocesadores 32 MIMD de memoria distribuída Nodo procesador procesador Cache(s) Cache(s) Memoria Memoria DMA Network interface procesador Características ● Comunicación explícita entre procesos paso de mediante p mensajes (MPI) ● Grado de acoplamiento más débil ● Mayor escalabilidad ((cientos de miles)) ● Cada nodo suele ser un SMP Cache(s) ……. DMA Network interface Red de interconexión Memoria DMA Network interface AC: Multiprocesadores 33 Clusters Conjunto de computadores autónomos, interconectados, que trabajan conjuntamente como un único recurso de cómputo. Objetivos: ● ● ● Escalabilidad Alta disponibilidad Buena relación coste/prestaciones Características: ● ● Redes de interconexión rápidas: Myrinet, Infiniband, Gigabit o dedicadas Apariencia de máquina única al usuario (“single-system image”) Aplicaciones: ● ● Servicios de Internet (p.e. búsqueda en la web) HPC (Top500): Clusters heterogéneos AC: Multiprocesadores 34 Arquitectura de un cluster AC: Multiprocesadores 35 Computación p Grid Red de computadores, distribuídos geográficamente, con software adecuado para compartir todos los recursos computacionales existentes en diferentes lugares del planeta ● • Requiere: - Tasa elevada de cálculo/datos - Tareas independientes - Tareas que toleran errores Ej Ejemplo: l Proyecto SETI@home (Search for Extraterrestial Intelligence) Contribuyen C t ib 5 millones ill d de usuarios, i en más á d de 200 países. í En 2006 velocidad de cálculo de 257 TFLOPS AC: Multiprocesadores 36 Clasificación de los MIMD Visión lógica compartida compartida distribuida UMA Memoria física distribuida NUMA M. M Dist. Dist ‘ ‘escalabilidad’ l bilid d’ Programación “cómoda” AC: Multiprocesadores 37 Multiprocesadores D fi i ió Definición: Cualquier procesador puede acceder a cualquier posición de memoria mediante instrucciones ld/st Los PCs actuales son MP de memoria compartida I l Implementación t ió ● UMA: - ● Basado en un BUS: límite 20-30 procesadores Otra red de interconexión: p.ej., crossbar 108 procesadores: caso extremo SunFire 15K NUMA: - Otra red de interconexión: anillo, hipercubo, toro, etc h t p.ej., hasta, j llos 2048 procesadores d d dell Cray C T3E AC: Multiprocesadores 38 REDES DINÁMICAS: Utilizadas en multiprocesadores p UMA. Crossbar Bus us compartido co pa t do M-M1 M-M2 M-M3 M-M4 MEMORIA CPU-1 CPU-2 CPU-1 CPU 1 CPU-2 CPU 2 CPU-3 CPU 3 CPU-4 CPU 4 CPU-3 CPU-4 CPU 4 AC: Multiprocesadores 39 REDES ESTÁTICAS: Utilizadas en multiprocesadores NUMA. Red hipercubo 3D M ll y Toroide Malla T id AC: Multiprocesadores 40 Multiprocesadores: Programación Su modelo de programación es similar al que se usa en los sistemas monoprocesador La comunicación L i ió y la l sincronización i i ió es a ttravés é d de variables compartidas ● Modelo load/store: leyendo y escribiendo en una determinada dirección Si Sincronización. i ió Los programas paralelos requieren 2 tipos: - Exclusión mútua: LOCKS (cerrojos) - Sincronización de eventos: Barriers (barreras) AC: Multiprocesadores 41 Overhead del paralelismo Overhead: - Coste de arrancar un proceso o un thread. Coste de comunicar información compartida. Coste de sincronización. Coste de los cambios de contexto Coste de la ejecución extra (y redundante) Desequilibrios de carga Baja proximidad de referencias Protocolos de coherencia de caches... Difícil de analizar pues depende de en qué máquina se ejecute: Solución no transportable AC: Multiprocesadores 42 Multiprocesadores: Soporte hardware Cambios en la Mp para soportar varias CPUs Ciclos especiales del bus para implementar instrucciones atómicas ● La mayoría de las arquitecturas emplea instrucciones read-modify-write d dif it atómicas tó i para iimplementar l t C Cerrojos j y Barreras (sincronización) Coherencia: Datos replicados en varias cachés Protocolo de coherencia entre cachés de distintos procesadores AC: Multiprocesadores 43 Memoria principal Parámetros: 1. tacceso (tMp) o latencia: t. que tarda en completar una L/E 2. Ancho de banda: nº de bytes/s que se puede transmitir a/de Mp Ejemplo: tMp = 100 ns; tamaño de palabra= 4 bytes [B] AB = 4 B / 100 ns = (4 / 10-77) B/ B/s = 40 MB/ MB/s Incremento del ancho de banda: ● A Aumentar t ell ancho h d de palabra l b ● Usar memorias entrelazadas Útil en la JM para Tbloque bl entre Mp y Mca: Sin entrelazado: tsubir/bajar bloque Nº palabras/bloque x tMp Con entrelazado: tsubir/bajar bloque tMp AC: Multiprocesadores 44 Memoria principal Tipos de entrelazado Modo en que se distribuye el mapa de direcciones: • Orden inferior: direcciones consecutivas en módulos consecutivos • Orden superior: direcciones consecutivas en el mismo módulo. Modo en que se accede a los módulos: • Simple: Misma dirección para todos los módulos • Complejo: Distinta dirección para cada módulo AC: Multiprocesadores 45 Memoria principal Entrelazado de orden inferior: Direcciones consecutivas en módulos consecutivos AC: Multiprocesadores 46 Memoria principal Entrelazado de orden superior: Direcciones consecutivas en el mismo módulo AC: Multiprocesadores 47 Memoria principal Entrelazado superior+inferior AC: Multiprocesadores 48 Memoria principal Entrelazado simple (esquema): Misma dirección Registros de datos AC: Multiprocesadores 49 Memoria principal Entrelazado simple p (acceso) ( ) 4 palabras en TMp AC: Multiprocesadores 50 Memoria principal Entrelazado complejo (esquema): Dir. distintas Registros R i de d direcciones AC: Multiprocesadores 51 Memoria principal Entrelazado complejo p j (acceso) ( ) AC: Multiprocesadores 52 Mp entrelazada: Ejemplos 8 módulos, inferior, palabra 4 bytes, tiempo acceso 100 ns • • Sin entrelazado: 4 bytes cada 100 ns: AB = 40 MB/s Con entrelazado “ideal”: AB = 40 MB/s x 8 = 320 MB/s Ejemplo-1: for (i=0; i < 1000; i+=2) a = a + v[i]; Direcciones: ¿Módulos?: • • 0, 2, 4, 6, 8, 10, 12, 14, 16, …. ¿AB Entr. Simple? ¿AB Entr. Entr Complejo? AC: Multiprocesadores 53 Mp entrelazada: Ejemplos 8 módulos, inferior, palabra 4 bytes, tiempo acceso 100 ns • • Sin entrelazado: 4 bytes cada 100 ns: AB = 40 MB/s Con entrelazado “ideal”: AB = 40 MB/s x 8 = 320 MB/s Ejemplo-1: for (i=0; i < 1000; i+=2) a = a + v[i]; Direcciones: Módulos: • • 0, 2, 4, 6, 8, 10, 12, 14, 16 0, 2, 4, 6, 0, 2, 4, 6, 0 AB Entr. simple: 4x40 = 160MB/s AB Entr. Entr complejo: 4x40 = 160MB/s AC: Multiprocesadores 54 Mp entrelazada: Ejemplos Ejemplo-2: for (i=0; i < 1000; i+=3) a = a + v[i]; Direcciones: 0, 0 3, 3 6, 6 9, 9 12, 12 15, 15 18, 18 21, 21 24 ¿Módulos? • • ¿AB Entr. Simple? ¿AB Entr. Complejo? AC: Multiprocesadores 55 Mp entrelazada: Ejemplos Ejemplo-2: for (i=0; i < 1000; i+=3) a = a + v[i]; Direcciones: 0, 0 3, 3 6, 6 9, 9 12, 12 15, 15 18, 18 21, 21 24 Módulos: • • 0, 3, 6, 1, 4, 7, 2, 5, 0 AB Entr. simple: 3x40 = 120MB/s AB Entr. complejo: 8x40 = 320MB/s AC: Multiprocesadores 56 Multiprocesadores basados en bus P1 Ca1 P2 Ca2 Pm ...... Cam Bus de datos Bus de direcciones Bus de control Mp M1 M2 ...... Mk AC: Multiprocesadores 57 Buses ¿Para qué sirven? Comunicar los distintos componentes (maestros/esclavos) Constan de líneas de dirección, datos y control para implementar: p • El protocolo de las transferencias de datos con la memoria • El arbitraje del acceso al bus cuando más de un maestro compite it por utilizarlo tili l Propiedades • Sólo un componente Sól t puede d enviar i un mensaje j en un instante i t t determinado. • Un componente puede enviar un mensaje a varios componentes diferentes sin coste adicional (broadcast) Fases transacción: Arbitraje (asignación propiedad), di direccionamiento i i t esclavo, l t transferencia, f i errores AC: Multiprocesadores 58 Buses: Arbitraje En vez de usar arbitraje centralizado, típico de monoprocesadores, arbitraje distribuido: ● Basado en prioridades p Proc i-1 Proc i BGRANT Arbitro i-1 Proc i+1 Prioridad Arbitro i Arbitro i+1 BBUSY REQ/GRANT AC: Multiprocesadores 59 Buses: Arbitraje Combinando prioridades y equidad Proc i-1 Proc i BGRANT Arbitro i-1 Proc i+1 Prioridad Arbitro i Arbitro i+1 BREQ BBUSY REQ/GRANT AC: Multiprocesadores 60 Buses Transferencias básicas en buses multiplexados: p • Escrituras: Dir • Lecturas: ectu as Dir Dato Tacc Dato AC: Multiprocesadores 61 Buses Transferencias de bloque q en buses multiplexados p Dir Dato ato 1 Dato 2 Dato3 Dato 4 … Utilizados para: • Leer/escribir bloques de caché • Mp con entrelazado simple (misma dirección) de orden inferior (en módulos consecutivos) • DMA en modo ráfaga AC: Multiprocesadores 62 Buses Transferencias atómicas en buses multiplexados p • Operaciones de lectura-modificación-escritura Dir • Tacc Lect Escr Se usan para implementar mecanismos de sincronización sincronización. o Acceso “exclusivo” a datos compartidos o a sección crítica o procesadores p proporcionan p instrucciones p para este tipo p de Los p operaciones Ejemplo: test&set (lock) => temp <- lock lock <- 1 return temp AC: Multiprocesadores 63 Buses de ciclo partido Se emplean en multiprocesadores y sistemas con Mp con entrelazado complejo. complejo En los buses de ciclo completo el bus no se libera desde que se inicia hasta que finaliza una operación. En los buses de ciclo partido: p • El maestro libera el bus durante el tiempo de acceso, para que otros lo usen (su uso se divide en “rodajas” o “ranuras”) • Luego, el esclavo le envía el dato. Necesita ser más “inteligente”, para poder tomar el control del bus. Debe guardarse d lla di dirección, ió tipo i operación, ió id id. maestro,… Dir 1 Dir 2 Dir 3 …. Dato 1 Dato 3 Dato 2 AC: Multiprocesadores 64 Buses de ciclo partido AC: Multiprocesadores 65 Coherencia de cachés Justificación del uso de cachés privadas: ● reducen el tiempo medio de acceso (uso “monoprocesador”) monoprocesador ) ● reducen la demanda de ancho de banda en la red de interconexión Problema: E i t Existencia i d de d datos t compartidos tid modificables difi bl ● copias de una misma variable en diferentes cachés ● si la escritura de un procesador en su copia no se hace visible a los demás, que también tienen copia: accederán a valores no actualizados (stale data) ● conocido como Problema de Coherencia de Cachés AC: Multiprocesadores 66 Problema de coherencia en cachés WT Ejemplo 1 P1 P2 A=5 Mp P3 A=5 A 5 A=5 AC: Multiprocesadores 67 Problema de coherencia en cachés WT Ejemplo 1 P1 P2 A=5 Mp P3 A=5 A=5 A 5 2 P1 P2 A=5 P3 A=7 Escribe “7” en A Mp A=7 A 7 AC: Multiprocesadores 68 Problema de coherencia en cachés WT Ejemplo P1 1 P2 A=5 Mp 3 2 P3 A=5 P2 A=5 P3 A=7 Escribe “7” en A Mp A=5 A 5 ¡Lee A=“5”! P1 A=7 A 7 P1 P2 A=5 A 5 Mp P3 A=7 A 7 A=7 AC: Multiprocesadores 69 Problema de coherencia en cachés CB Ejemplo 1 P1 P2 A=5 Mp P3 A=5 A 5 A=5 AC: Multiprocesadores 70 Problema de coherencia en cachés CB Ejemplo 1 2 P1 P2 A=5 Mp P3 P1 A=5 A=5 Mp A 5 A=5 P2 P3 A=7 Escribe “7” en A A=5 AC: Multiprocesadores 71 Problema de coherencia en cachés CB Ejemplo 1 2 P1 P2 A=5 P3 P1 A=5 A=5 Mp Mp A=5 A 5 P2 P3 A=7 Escribe “7” en A A=5 3 ¡Lee A=“5”! P1 P2 A=5 Mp P3 A=7 A=5 AC: Multiprocesadores 72 Problema de coherencia en cachés CB Ejemplo 1 2 P1 P2 A=5 P3 P1 P2 A=5 A=5 A=5 A=5 A 5 3 ¡Lee A=“5” de Mp! 4 ¡Lee A=“5”! P1 P2 A=5 Mp A=5 Escribe “7” en A A=7 Mp Mp P3 P3 P1 P2 P3 A=7 A=5 A=5 A=7 Mp A=5 AC: Multiprocesadores 73 Coherencia de cachés: Soluciones 1 1. Uso de cachés compartidas – : necesario un mayor ancho de banda que con cachés privadas de menor capacidad – : mayor tiempo de acceso que con cachés privadas 2. Distinguir entre información “cacheable” y “no cacheable” • ej. “cacheable”: instrucciones, datos privados • ej. “no cacheable”: datos compartidos, p.ej., cerrojos, datos en regiones i críticas íti • Se usa puntualmente (DMA) AC: Multiprocesadores 74 Coherencia de cachés: Soluciones 3. Copiar en la caché cualquier bloque: todo “cacheable” ● funcionamiento “monoprocesador”: se lleva a la caché cualquier bloque que se necesite. ● coherencia mantenida por Hw: H circuitería circ itería añadida q que e garantiza que no se acceda a una copia no actualizada de un bloque - - posibles políticas de actuación ante escrituras: Con Invalidación (I) Con Actualización (A) Implementaciones (independientes de la política de actuación): MP basados en buses: snoopy MP con otro tipo de redes ( ‘escalables’): escalables ): directorios AC: Multiprocesadores 75 Coherencia de cachés. Políticas de actuación Independientemente de su implementación: A) Invalidación (I): Write-Invalidate Write Invalidate cuando un procesador modifica su copia de un bloque se invalidan el resto de las copias existentes B) Actualización (A): Write-Update/Broadcast con cada modificación se actualiza el resto de las copias existentes i t t AC: Multiprocesadores 76 Invalidación Ejemplo Invalidación. 1 P1 P2 P3 A=5 A=5 A=5 Mp A=5 AC: Multiprocesadores 77 Invalidación Ejemplo Invalidación. 1 2 P1 P2 P3 A=5 A=5 A=5 Mp Escribe “7” en A envío de Invalidación A=5 P1 P2 P3 A=7 A=5 A=5 Mp A=7 Write once: La primera escritura actualiza la Mp AC: Multiprocesadores 78 Invalidación Ejemplo Invalidación. 2 1 P1 P2 P3 A=5 A=5 A=5 Mp Escribe “7” en A envío de Invalidación A=5 P1 P2 P3 A=7 A=5 A=5 Mp A=7 3 P1 P2 A=7 Mp P3 Lectura de A “fallo en Mca” A=7 AC: Multiprocesadores 79 Invalidación Ejemplo Invalidación. 2 1 P1 P2 P3 A=5 A=5 A=5 Mp Escribe “7” en A envío de Invalidación P2 A=7 Mp A=7 P2 P3 A=7 A=5 A=5 Mp A=5 A=7 3 P1 P1 P3 Lectura de A “fallo en Mca” 4 P1 P2 A=7 Mp P3 A=7 Lee de Mp A=7 AC: Multiprocesadores 80 Actualización Ejemplo Actualización. 1 P1 P2 P3 A=5 A=5 A=5 Mp A=5 AC: Multiprocesadores 81 Actualización Ejemplo Actualización. 1 2 P1 P2 P3 A=5 A=5 A=5 Mp A=5 Escribe “7” en A Difusión del nuevo valor P1 P2 P3 A 7 A=7 A 7 A=7 A 7 A=7 Mp A=7 AC: Multiprocesadores 82 Invalidación vs Actualización Invalidación: ● Más fallos de caché por las invalidaciones ● Al crecer el tamaño de bloque, q la invalidación g genera más fallos de cachés debido a la falsa compartición Actualización: ● Más tráfico en la red por las actualizaciones ● A mayor tamaño de la memoria caché genera más tráfico ya que h más hay á d datos t y los l bl bloques d duran más á La invalidación es la más utilizada, aunque algunas arquitecturas implementan ambas ¿Cual es mejor? ¡Depende del comportamiento del programa! AC: Multiprocesadores 83 Coherencia de cachés: ‘grano fino’ fi ’ vs. ‘secuencial’ ‘ i l’ Maneras de compartir un bloque ‘grano g fino’ ‘secuencial’ Px Py P Pz ... ... t t ... ... ... AC: Multiprocesadores 84 Coherencia de cachés: I l Implementaciones t i snoopy Se utilizan en multiprocesadores en los que la red de interconexión es un bus Idea básica: - Las transacciones en el bus son visibles a todos los procesadores - Los controladores de cada caché (doble interfaz: proc./bus) observan lo que pasa en el bus y realizan acciones para preservar la coherencia P1 P2 P3 ...... Ca1 + snoop Ca2 + snoop Ca3 + snoop Mp AC: Multiprocesadores 85 Coherencia de cachés: Implementaciones snoopy Frente a cada transacción, transacción el controlador de la caché realiza acciones para mantener la coherencia: Actualizar estado, Suministrar datos, Generar nuevas transacciones El protocolo se implementa como una máquina de estados distribuída. El tamaño del “grano de coherencia” es el bloque de caché Dependiendo de la política de escritura de la caché ● Cachés con write-through ● Cachés con copy-back: protocolos más complejos, pero más utilizados en los actuales multicore - Protocolo básico con invalidación: MSI AC: Multiprocesadores 86 Protocolo MSI (copy-back con invalidación) Cada bloque de caché puede estar en uno de los siguientes estados: • Modified: el bloque ha sido modificado por la CPU y es la única copia válida en el sistema (incluída la Mp) Valid+Dirty en monoprocesador • Shared: puede haber más de una copia en el sistema y todas ellas tienen el mismo valor Valid + noDirty en monoprocesador • Invalid: el bloque, que estuvo en la caché, está invalidado Invalid en monoprocesador AC: Multiprocesadores 87 MSI (copy-back con invalidación) Principios p básicos: ● Un bloque puede estar en varias cachés si y solo si está en estado compartido (S) ● Si un bloque está modificado (M), solo puede estar en una u a caché cac é ● Los bloques de caché cambian su estado en función de dos tipos p de eventos: - Locales: debidos a los accesos del propio procesador - Remotos: debidos a la actividad que observan en el bus (snoopy) AC: Multiprocesadores 88 MSI Acciones MSI. • Cuando un procesador realiza una petición de lectura a su caché: – Si acierto y bloque marcado como S o M, no cambia de estado t d y la l caché hé devuelve d l ell valor l demandado d d d – Si fallo (o bloque marcado como I), el procesador hace una petición a memoria a través del bus (emite BusRd) y: • Si ninguna otra caché tiene el bloque marcado como M, lee ell bloque bl d M de Mp y llo marca como S • Si otra caché tiene el bloque marcado como M ésta actualiza la copia de Mp (copy-back) (copy back) y pasa el bloque a S. El procesador lee entonces el bloque de Mp y lo marca también como S AC: Multiprocesadores 89 MSI. Acciones • Cuando un procesador realiza una petición de escritura a su caché: – – Si acierto • Si bloque marcado como M, se realiza la escritura localmente y ell bloque bl no cambia bi d de estado t d • Si bloque marcado como S, pasa a M, se escribe en la caché local y se emite BusInv, para invalidar las copias del resto de las cachés. cachés Si fallo (o bloque marcado como I) el procesador hace una petición a memoria a través del bus bus, indicando su intención de escribir (BusRdX) y: • Si otras cachés tienen el bloque marcado como S lo invalidan • Si otra caché tiene el bloque marcado como M, ésta actualiza la copia de Mp (copy-back) y pasa el bloque a I • El procesador lee el bloque de Mp Mp, lo marca como M y realiza la escritura AC: Multiprocesadores 90 MSI Operación de lectura MSI. PrRd M M BusRd + MpWr PrRd BusRd S S I I PrRd + BusRd AC: Multiprocesadores 91 MSI Operación de escritura MSI. PrRd M M PrWr + BusRdX PrWr BusRd + MpWr PrWr + BusInv PrRd S PrRd + BusRd I B RdX + BusRdX BusRd MpWr S BusRdX o BusInv I AC: Multiprocesadores 92 MSI: Diagrama de estados PrRd PrWr M PrWr BusRd PrRd PrWr BusRdX S PrRd BusRd BusRdX B RdX o BusInv I AC: Multiprocesadores 93 Variantes del protocolo MSI: Optimizaciones MESI Introduce MESI: I t d un nuevo estado t d Exclusivo E l i ● El bloque q contiene información no modificada y solo esta en una caché ● Idea: el procesador no necesita invalidar otras cachés cuando accede en escritura a un bloque E: la escritura se hace localmente y el bloque pasa a estado M ● Utilizado por los procesadores multi-core de Intel AC: Multiprocesadores 94 Protocolo MESI: Estados ● M (Modified): la línea de caché se ha modificado modificado, es diferente de la copia en Mp y está disponible solo en esta caché ● E (Exclusive): la línea de caché es la misma que la copia en Mp y no está presente en ninguna otra caché. ● S (Shared): ): la línea de caché es la misma que la copia en Mp y puede estar presente en otras cachés ● I (Invalid) – la línea está invalidada AC: Multiprocesadores 95 Protocolo MESI Transiciones adicionales a MSI ● ● Si fallo en lectura (emite BusRd) : - si el bloque no está en ninguna caché, se lee de Mp y se pone en estado E - si el bloque está en otra caché en estado E, se marca como S en ambas cachés Si fallo en escritura (emite BusRdX) - Si otra caché tiene el bloque en estado E se invalida (I) • El procesador lee el bloque de Mp, lo marca como M y realiza la escritura AC: Multiprocesadores 96 MESI. Diagrama g de estados PrRd PrWr M M PrWr + BusRdX BusRd + MpWr PrWr + BusInv E PrRd S BusRdX + MpWr E BusRd S BusRdX B RdX o BusInv PrRd + BusRd I I AC: Multiprocesadores 97 MESI. Diagrama de estados PrRd 1.- Peticiones locales PrWr P W + -- PrWr M M BusRd + MpWr PrWr + BusInv E PrWr + BusRdX PrRd PrRd +BusRd (S) BusRdX + MpWr E BusRd S S BusRdX o BusInv PrRd + BusRd (S) I I AC: Multiprocesadores 98 MESI. Diagrama de estados 2.- Peticiones remotas PrWr + -- PrRd PrWr M M BusRd + MpWr PrWr + BusInv E PrWr + BusRdX PrRd PrRd +BusRd (S) S PrRd + BusRd (S) I BusRdX + MpWr E BusRd BusRd S BusRdX BusRdX o BusInv I AC: Multiprocesadores 99 Coherencia y programación paralela Ejemplo: float x[1000][1000]; for (i=0; i<N; i++) for (j=0; j<N; j++) x[i][j] = f( f(…); ); proximidad secuencial Cada elemento ocupa 4 bytes y cada bloque de caché 64 bytes El cálculo de cada elemento de x es independiente Idea: ● Diferentes threads actualizan diferentes elementos de x ● Los diferentes threads pueden ejecutarse en distintos procesadores o cores Menor tiempo de ejecución Speedup esperado = N Nº procesadores AC: Multiprocesadores 100 Coherencia y programación paralela Tread 1 (CPU1) Tread 2 (CPU2) …… ….. x[0][0] = f(…); ….. ….. x[0][1] = f(…); f( ) x[0][3] = f(…); ….. ….. x[0][4] = f(…); f( ); ¿Problema? Los elementos (independientes) actualizados por los dos procesadores se encuentran en los mismos bloques de caché (falsa compartición) Problemas por mantener la coherencia, que se realiza a nivel de bloque bloque, y no de palabra AC: Multiprocesadores 101 Coherencia y programación paralela Falsa compartición Un bloque contiene información independiente, actualizada por distintos procesadores • Cuando una CPU quiere escribir en el bloque, otras cachés que lo tengan deben invalidarlo • Si ell bloque bl a invalidar i lid está tá modificado, difi d se escribe ib en Mp M Tread 1 (CPU1) Caché CPU1 …… x[0][0] = f(…); ….. x[0][3] = f(…); ….. Tread 2 (CPU2) Caché CPU 2 ….. Lee bloque ¡Invalida bloque! Lee bloque ¡Invalida bloque! ….. x[0][1] = f(…); Lee bloque ….. ¡Invalida bloque! x[0][4] = f(…); Lee bloque AC: Multiprocesadores t 102 Coherencia y programación paralela Falsa compartición Efectos negativos: Aumento significativo del tiempo de ejecución Speedup real <<< Nº procesadores Posible solución: ● Que cada bloque contenga información actualizada por un solo proceso o thread. ● En el ejemplo anterior: Que cada thread actualice elementos consecutivos de x En resumen, en un multiprocesador o multicore: No solo N l h hay que ttener en cuenta t lla proximidad i id d de d referencias f i para sacar partido de las cachés, además hay que tener en cuenta el impacto del protocolo para mantener su coherencia AC: Multiprocesadores 103 Sincronización (I) Necesaria cuando los procesos que se ejecutan a la vez en diferentes procesadores: ● Acceden a datos compartidos “al mismo tiempo” (exclusión mutua) Ejemplo: ● P1: P2: A=A+1 A= A+2 Coordinan su progreso en relación a otros procesos (barreras) Ejemplo: Avance sincronizado de procesos Se implementa con la adquisición y liberación de cerrojos La arquitectura debe proporcionar mecanismos para su implementación: instrucciones read-modify-write atómicas AC: Multiprocesadores 104 Sincronización: Ejemplo Proceso en P1 Proceso en P2 A= A + 1 A= A + 2 ld r1, A ld r1, A addi ddi r1,r1,1 1 11 addi ddi r1,r1, 1 1 2 st r1, A st r1, A ( ) Secuencia (a) S i original i i l ¡¡Se retrasa! ld r1, A ld r1, A addi ddi r1,r1, 1 1 2 st r1, A addi r1,r1,1 add , , st r1, A (b) Secuencia temporal que da como resultado A + 1 AC: Multiprocesadores 105 Sincronización: Ejemplo j p Para proceder de forma ordenada se debe asegurar la secuencialidad en el acceso a la variable compartida (A): Uso de cerrojos Uso típico p de un cerrojo, j , incluyendo y su liberación: while (no soy el único) espero modifico variable(s) compartida(s) aviso de que salgo // adquisición(cerrojo) // método de espera // liberación(cerrojo) AC: Multiprocesadores 106 Sincronización (II) 1.- Método de adquisición: Adquirir derecho a la sincronización (p.e. entrar en la región crítica): Preguntar si cerrojo libre, libre y si lo está ponerlo a ocupado 2.- Método de espera: ● Con bloqueo: - El proceso se suspende, pasa a la cola de “ready” y libera el procesador. - Mucho M h overhead h d (salvar ( l estado, t d planificar l ifi y restaurar) t ) ● Espera activa (spin-lock) - El proceso muestrea repetidamente una variable (el cerrojo) hasta que su valor cambie - Produce tráfico extra en la red - Adecuado Ad d sii ell coste t d de ““replanificación” l ifi ió ” es mayor que ell titiempo de espera: Las regiones críticas deben ser MUY pequeñas 3. - Método de liberación “Liberar” la sincronización: Poner cerrojo a libre AC: Multiprocesadores 107 Sincronización (III): Implementación de Exclusión mutua Locks: ● Primera versión: lock: Adquisición ld .R1, /dir_cerrojo cmp .R1, #0 bnz $lock st #1, /dir_cerrojo Estado cerrojo 0: libre 1: ocupado ret Liberación unlock: st #0, /dir_cerrojo ret AC: Multiprocesadores 108 Sincronización (IV): ( ) Implementación de Exclusión mutua Locks: ● Segunda versión: con test&set (t&s) lock: t&s bnz ret .R1, /dir_cerrojo / $lock unlock: st #0, /dir_cerrojo ret Consideraciones de rendimiento: ● t áfi tráfico, invalidaciones, i lid i h hambruna,... b Alternativa: sólo operaciones de lectura en la “espera”: t t&t t& t test&test&set AC: Multiprocesadores 109 Sincronización (V) Test and Test and Set: repeat t while (LOAD(lock) = 1) do nothing; until (TEST&SET(lock) = 0)) lock: ld cmp p bnz t&s bnz ret .R1, /dir_cerrojo .R1, , #0 $lock .R1, /dir_cerrojo $lock + : Consulta el valor del cerrojo en la caché local – : sigue habiendo algo de tráfico si hay muchos procesos esperando por el cerrojo (un t&s cada uno) AC: Multiprocesadores 110 Sincronización (VI) Locks ● Tercera versión: load-locked + store-conditional LL: carga el valor de la variable de sincronización en un registro SC: almacena un valor de ‘ocupado’ en dicha variable si y solo si ningún otro procesador ha escrito en ella desde que ejecutó LL (éxito), todo atómico lock: ll .R1, /dir_cerrojo cmp .R1, #0 bnz $lock sc #1, /dir_cerrojo bz $lock ret // (dir)-> R1 // ¿cerrado? // si éxito 1-> (dir) // si fallo,reintento unlock: st #0, /dir_cerrojo ret - Número de invalidaciones óptimo, dos, una al salir de la región crítica y otra al entrar el siguiente Ot Otras versiones: i ti k t lock, ticket l k array-based b d queing: i ambas b llogran FIFO AC: Multiprocesadores 111 Sincronización (VII) ( ) Ejemplos de instrucciones: ● IBM 370: compare&swap atómico para multiprogramación ● intel x86: cualquier instrucción (de acceso a memoria) puede llevar el prefijo LOCK (acceso atómico) ● Los SPARC (RISC): operaciones atómicas registro-memoria: swap,compare&swap ● MIPS PowerPC, MIPS, PowerPC Alpha: no accesos atómicos, sino pareja de instrucciones load-locked/store-conditional AC: Multiprocesadores 112 Sincronización ((VIII). ) Barreras Barrera: Operación O ió d de sincronización i i ió que ffuerza a llos procesos concurrentes a esperar hasta que todos ellos lleguen a un punto determinado (barrera) y entonces se permite la continuación de los mismos Se suelen implementar en software, utilizando LOCKS, contadores y flags AC: Multiprocesadores 113 Sincronización (IX) IImplementación l t ió de d Barreras B Barrera centralizada AC: Multiprocesadores 114 Sincronización (XII) ( ) Barreras con cambio de sentido ¿por qué? AC: Multiprocesadores 115