1 / 85

Multiprocesadores

Multiprocesadores. Coherencia, Consistencia y Sincronización. Bibliografía D. E. Culler, J.P. Singh. “Parallel Computer Architecture: A Hardware/Software” J.L. Hennesy, D.A. Patterson. “Computer Architecture. A Quantitative Approach” J. P. Shen, M. Lipasti. “Modern processor design”.

step
Download Presentation

Multiprocesadores

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Multiprocesadores Coherencia, Consistencia y Sincronización.

  2. Bibliografía • D. E. Culler, J.P. Singh. “Parallel Computer Architecture: A Hardware/Software” • J.L. Hennesy, D.A. Patterson. “Computer Architecture. A Quantitative Approach” • J. P. Shen, M. Lipasti. “Modern processor design”

  3. Alternativas de implementación (1) Switch Memoria Principal Primer Nivel $ Cache Compartida -Entrelazadas (2-8) (e.g. Alliant FX-8, Encore& Sequent) Mem Mem Pn P1 $ $ Mem Mem Red de Interconexión Escalable Memoria Distribuida (NUMA) Escalabilidad Pn P1 Pn P1 • Bus Compartido • Dance-hall $ $ Red de Interconexión Memoria Compartida (SMP, UMA)

  4. Alternativas de implementación (2) Problemas Coherencia Ancho de Banda limitado SMP basado en Bus Compartido Mayor éxito (multitarea y grano fino) P1 Pn $ $ Bus E/S Memoria • Servidores • Estaciones de trabajo • Bloques de construcción básicos sistemas de gran escala • Soporte en microprocesadores de propósito general

  5. Modelo de programación Match Receive Y , P , t Addr ess Y Send X, Q, t Addr ess X Local pr ocess Local pr ocess addr ess space addr ess space Pr ocess P Pr ocess Q • Memoria compartida ( el más antiguo y extendido ) • Todos los Pc pueden direccionar cualquier posición de memoria • Las comunicaciones son implícitas por “LOAD y STORE”. Los procesos comparten parte de su espacio virtual. • Paso de mensajes • Cada nodo Pc+Memoria+ I/O • Cada Pc solo accede a su memoria privada • Comunicaciones vía mensajes explícitos ( SEND- RECIEVE ). Soporte operaciones de E/S • Las comunicaciones deben aparecer explícitas en el programa

  6. Jerarquía de memoria extendida CPU CPU CPU Replicación: Problema de coherencia Variables Compartidas Jerarquía de Memoria • Ocultar la latencia de los accesos • Incrementar el Ancho de Banda

  7. Problema de la coherencia cache P P P 1 3 2 Load U Load U 3 $ U = ? $ U = ? $ U: 5 4 5 U: 5 Store U U: 7 Dispositivos I/O U: 5 Load U 1 2 Load U Memoria Siguen la pista del estado de cualquier bloque de datos compartido para evitar incoherencias Protocolos de coherencia de cache (P1) Load U (P3) Load U (P3) Store U (P1) Load U (P2) Load U

  8. Soluciones de Grano Grueso (1) L2 MMu DL1 DMA Memoria Controlador I/O • Problemas de coherencia en uniprocesadores • Operaciones de E/S a través de dispositivos DMA: • Salida de dato obsoleto (cache post-escritura) • Entrada de dato que no tenga efecto (acierto de cache)

  9. Soluciones de Grano Grueso (2) • Soluciones uniprocesador • Evitar usar la cache • Segmentos de memoria involucrados en E/S se marcan como “No-Cacheables” • Sacar de la cache antes de E/S (SO) • Páginas de memoria involucradas se vuelcan previamente a memoria (flush) • Usar la cache para E/S • Tráfico de E/S pasa por todos los niveles de la jerarquía de memoria.

  10. Soluciones de Grano Grueso (3) • En multiprocesadores • La escritura o lectura de variables compartidas es un evento frecuente. • No es práctico: • Deshabilitar la cache para datos compartidos • Invocar al SO en cada referencia a una variable compartida Solución: Proveer coherencia de memoria

  11. Sistema de Memoria Coherente (1) ¿Qué significa que un sistema de memoria es coherente? (Definición menos formal) Una operación de lectura retorna siempre el último valor que fue escrito en la posición de memoria correspondiente, independientemente del procesador que efectúa la lectura o la escritura

  12. Sistema de Memoria Coherente (2) Orden hipotético • Definición formal (Sistema Coherente) • Si para • El resultado de cualquier ejecución de un programa • Cualquier posición de memoria (U) • Es posible construir una ordenación secuencial consistente con los resultados de la ejecución, y tal que: • Operaciones de un procesador  Ordenadas en secuencia en orden en que son emitidas a sistema de memoria • Valor devuelto por load  Valor escrito por el último store Px: Load U Py: Load U . . . Px:Store U Pz: Load U U

  13. Sistema de Memoria Coherente (3) Escrituras visibles a todos los procesadores Todas las escrituras a una posición de memoria deben verse en el mismo orden por todos los procesadores Implícito: Propagación + Serialización de escrituras

  14. Políticas para mantener la coherencia (1) Políticas para mantener la coherencia Invalidación en Escritura Actualización en Escritura

  15. Políticas para mantener la coherencia (2) • Invalidación en Escritura / Coherencia Dinámica • Al escribir en un bloque se invalidan todas las otras copias • Múltiples lectores, un solo escritor • Escrituras consecutivas a un bloque (no palabra) desde el mismo procesador se realizan localmente • No hay copias • Una transacción por bloque • Fallo de Lectura • Escritura-Directa (write-through): • la memoria esta siempre actualizada • Post-Escritura (write-back): • búsqueda en caches remotas (snoop) para encontrar el ultimo valor • Ejemplo del H&P

  16. Políticas para mantener la coherencia (3) • Actualización en Escritura • Al escribir en un bloque se actualizan todas las copias • Escritura directa (write-through), pocos procesadores • Escrituras consecutivas requieren múltiples actualizaciones (write merge) • Fallo de Lectura • Se busca en la memoria  siempre esta actualizada • Ejemplo del H&P

  17. Políticas para mantener la coherencia (4) • Tipo de protocolo • Broadcast eficiente • Las operaciones de invalidación o actualización se pueden enviar de forma simultánea a todos los controladores. • En otro caso • La actualización se envía únicamente a aquellas caches que tienen una copia del bloque. Buses: Protocolo Snoopy Observación del Bus Protocolos Basados en Directorio Se indica en qué caches existe copia y en qué estado

  18. Procolos Snoopy (1) State Tag Datos CPU Bus Transacciones Relevantes ° ° ° Ld/St Controlador de Cache + CACHE Sólo es necesario extender la funcionalidad del controlador de cache • Espionaje el bus

  19. Procolos Snoopy (2) • El controlador de cache puede por tanto: • Recibir peticiones del procesador, examinar el estado de la cache, y emitir una petición al bus • Espiar las peticiones que aparecen en el bus, y reaccionar a aquellas que afecten a la cache que controla • Realmente, la comprobación del controlador es la misma comparación (tag-match) que se hace cuando llega petición del procesador • Por todo esto, el hardware de multiprocesadores de memoria compartida por bus, es muy adecuado para los protocolos snoopy, pues requiere muy pocos cambios • Hacer ejemplo 5-2, pg. 267 de Culler

  20. Procolos Snoopy (3) • Uniprocesador: • Protocolo de la cache: Algoritmo formado por máquinas de estado que cooperan. Define: • Conjunto de estados (Cada bloque de memoria tiene un estado asociado) • Diagrama de transición de estados • Acciones asociadas a cada transición • Los Cambios de Estado son provocados por: • Operaciones de memoria efectuadas por el procesador: Devuelve el dato, y si no lo tiene, accede a memoria. S1 Acciones asociadas S2 Estado de un bloque en MEMORIA

  21. Procolos Snoopy (4) • Multiprocesador: • Protocolo Snoopy (basado en espionaje del bus): Algoritmo formado por máquinas de estado que cooperan. Define: • Conjunto de estados (Cada bloque de memoria tiene un estado asociado a cada procesador) • Diagrama de transición de estados • Acciones asociadas a cada transición • Los Cambios de Estado son provocados por: • Transacciones del bus relevantes: Actualiza su estado, y posiblemente ayuda a completar la transacción. • Operaciones de Memoria efectuadas por el procesador local: Devuelve el dato, y posiblemente genera una nueva transacción del bus. S1 Acciones asociadas p1 p2 pN S2 Vector de Estados de un bloque en MEMORIA

  22. Protocolo Snoopy de 2 Estados (1) Lectura / -- Escritura / Memoria V Fallo Lectura / Memoria I Escritura / Memoria • Un único nivel de cache. • Escritura Directa (write-through) • Sin Asignación en Escritura (write non-allocate) • Política de Invalidación • Diagrama de Estados en Uniprocesador • Inicial : bloques inválidos • Lectura : Inválido  Válido • Puede generar reemplazamiento • Escritura : no cambia el estado

  23. Protocolo Snoopy de 2 Estados (2) • Un único nivel de cache. • Escritura Directa (write-through) • Sin Asignación en Escritura (write non-allocate) • Política de Invalidación PrRd / -- PrWr / BUS_Wr V • Diagrama de Estados en Protocolo Snoopy • Lecturas: PrRd • Escrituras: PrWr • Transacciones del BUS: • BUS_Rd • BUS_Wr Pr_Rd / BUS_Rd BUS_Wr /-- I Ejemplo de folios PrWr / BUS_Wr

  24. Protocolo Snoopy de 2 Estados (3) Supongamos: 1 nivel cache, Write-through, Non-allocate. ¿Es coherente este Protocolo Snoopy de 2 estados? • Asunciones: • Los controladores de cada cache espían el bus  Propagación de escrituras • La memoria se ocupa de las operaciones de memoria en el orden en que estas se presentan al bus (arbitraje del bus). • Operaciones de memoria atómicas: Sólo una operación activa al mismo tiempo en el bus.  Serialización de escrituras • Operaciones tratadas en el orden en que son emitidas • Valor devuelto por última lectura es el último escrito

  25. Protocolo Snoopy de 2 Estados (4) • Valor devuelto por última lectura es el último escrito: • Los fallos  Serializados por el bus • Los aciertos  Escrituras serializadas por el bus, pero las lecturas no totalmente serializadas No es problema porque, el valor que tiene la cache lo puso: • La última escritura • El último fallo de lectura de ese procesador Y ambas operaciones estarían también serializadas • Volver sobre el ejemplo de folios

  26. Protocolo Snoopy de 2 Estados (5) • Problema: Ancho de Banda alto (write-through) • Ejemplo: • Procesador a 2000 MHz • CPI = 1 • 15% stores de 8 bytes • 300 Millones de stores por segundo por procesador • 2400 MB/s por procesador • Un bus con un ancho de banda de 10GB/s sólo puede soportar 4 procesadores sin saturarse Solución: utilizar post-escritura (Write-back), más compleja la propagación y serialización…

  27. Recordatorio: caches write-back (1) • Clave para un uso eficiente del ancho de banda del bus: • Post-Escritura (write-back) • Asignación en Escritura (write-allocate) • Diagrama de transición de estados de una cache con Post-Escritura • Tres estados: • Invalido (o no presente) • Válido (clean) • Modificado (dirty) • Dos tipos de accesos a memoria / Transiciones de Bus • Lecturas (BusRd): • Fallo lectura o escritura (asignación en escritura) • PostEscrituras (BusWB): • Reemplazamiento

  28. Recordatorio: caches write-back (2) PrWr/— Acierto Escritura PrRd/— M PrWr/— Acierto Escritura PrWr/BusRd Fallo Escritura Replace/BusWB V PrRd/BusRd Replace/— PrRd/— I • Hacer ejemplo folios

  29. Protocolo MSI: invalidación de 3 estados (1) • Extensión del protocolo de monoprocesador a multiprocesador  MSI • Tres estados: • Invalido (o no presente) • Compartido (shared) • Modificado (modified) • Peticiones del procesador • PrRd y PrWr • Transacciones de bus • BusRd  Lectura sin intención de modificar el dato. La genera el controlador cuando recibe un PrRd y no tiene dato en cache. • BusRdX  Traer dato con intención de modificarlo. Resto de caches invalidan su copia. La genera el controlador cuando recibe PrWr y el dato no está en cache o está pero no está en estado modificado. • BusWB/Flush  El controlador vuelca al bus el dato.

  30. Protocolo MSI: invalidación de 3 estados (3) PrWr/— M PrRd/— PrWr/BusRdX • Sólo hay 1 cache con copia válida (la copia de la memoria principal está anticuada) • La exclusividad implica que la cache puede modificar el bloque sin notificárselo a nadie BusRd/ Flush Replace / Flush S BusRdX / Flush PrRd/BusRd PrWr/BusRdX BusRdX/- • El bloque está presente en la cache y no ha sido modificado • La memoria está actualizada • Otras caches adicionales pueden tener copia PrRd/— BusRd/— I Valido: Shared Modificado: Exclusivo Nueva transacción: BusRdx (Lectura con Invalidación)

  31. Protocolo MSI: invalidación de 3 estados (4) I U 5 M 7 S U : 5 S — — I — M P1 P2 P3 3. PrWr U U S 5 BusRdX U I/O Memoria Operación Estado P1 Estado P2 Estado P3 Transacción Datos Bus Suministrados Memoria BusRd P1 Lee U S — S BusRd Memoria P3 Lee U P3 escribe U BusRdX Memoria (BusUpg) (ignorados) P1 Lee U P2 Lee U

  32. Protocolo MSI: invalidación de 3 estados (5) S U S 7 I Flush U BusRd U 7 U : 5 S — — S — S Cache P3 BusRd P1 P2 P3 4. PrRd U U M 7 I/O Memoria Operación Estado P1 Estado P2 Estado P3 Transacción Datos Bus Suministrados Memoria BusRd P1 Lee U S — S BusRd Memoria P3 Lee U P3 escribe U BusRdX I — M Memoria (BusUpg) (ignorados) P1 Lee U P2 Lee U

  33. Protocolo MSI: invalidación de 3 estados (6) U S U S 7 BusRd U U : 7 S — — S S S BusRd Memoria P1 P2 P3 5. PrRd U U S 7 7 I/O Memoria Operación Estado P1 Estado P2 Estado P3 Transacción Datos Bus Suministrados Memoria BusRd P1 Lee U S — S BusRd Memoria P3 Lee U P3 escribe U BusRdX I — M Memoria (BusUpg) (ignorados) S — S Cache P3 P1 Lee U BusRd P2 Lee U

  34. Hacer ejemplo 5-2, pg. 267 de Culler

  35. Protocolo MSI: Decisiones de bajo nivel M BusRd/ Envio S BusRd / Envio I • Detalle: Problema  Contador compartido • ¿Qué transición hacer cuando se recibe BusRd de un bloque en estado modificado? • La elección depende de las expectativas (patrón de acceso siguiente) • Patrón 1: el procesador “original” vuelve a realizar una lectura del bloque • Patrón 2: el procesador “nuevo” realiza una escritura del bloque • Shared • Patrón 1: acierto de lectura • Patrón 2: invalidación (latencia de escritura) • Inválido • Patrón 1: fallo de lectura • Patrón 2: no es necesaria invalidación Solución  Ajuste dinámico

  36. Protocolo MESI: Invalidación de 4 estados (1) I S M • Problema Protocolo MSI • El protocolo MSI no soporta bien Aplicaciones Secuenciales. • Lectura-Modificación de un dato: • 2 transacciones de bus: • BusRd: Trae el bloque a estado Shared • BusRdX: Pasa de S a M, e invalida el resto de copias. BusRd BusRdX

  37. Protocolo MESI: Invalidación de 4 estados (2) • Protocolo MESI • 4 Estados : • (M) Modificado, • (E) Exclusivo, • (S) Compartido e • (I) Inválido • Nuevo estado (Exclusive Clean / Exclusive) • Implica Exclusividad: puede pasarse a (M) sin transacción de bus • No implica Pertenencia: el controlador de cache no debe responder a transacción BusRd, pues memoria actualizada. • Utilizado en muchos procesadores: • Pentium • Power PC 601 • MIPS R4400 (procesador usado en los multiprocesadores de Silicon Graphics)

  38. Protocolo MESI: Invalidación de 4 estados (3) PrWr/ PrRd (S)/ BusRd PrRd/- BusRdX/- PrRd (S) / BusRd BusRd/- M (S): se activa la señal share ! Sólo nuevas transiciones ! BusRdX: Lectura exclusiva E S I

  39. Hacer ejemplo que viene a continuación: • Insistir en OR-cableada • Insistir en ventaja de MESI sobre MSI  Ejemplo • Ejemplo de folios

  40. Protocolo MESI: Invalidación de 4 estados (4) U 5 E BusRd U U : 5 E — — Memoria BusRd P1 P2 P3 1. PrRd U Señal shared (S) OR-cableada I/O Memoria Operación Estado P1 Estado P2 Estado P3 Transacción Datos Bus Suministrados P1 Lee U P3 Lee U P3 escribe U P1 Lee U P2 Lee U

  41. Protocolo MESI: Invalidación de 4 estados (5) S U S 5 BusRd U U : 5 E — — S — S BusRd Memoria P1 P2 P3 2. PrRd U U E Señal shared (S) OR-cableada I/O Memoria Operación Estado P1 Estado P2 Estado P3 Transacción Datos Bus Suministrados Memoria BusRd P1 Lee U P3 Lee U P3 escribe U P1 Lee U P2 Lee U

  42. Protocolo MOESI: invalidación de 5 estados (1) • Problema MESI/MSI • Transacción Flush • Además de transferir el bloque a la cache que lo solicita, se actualiza el contenido de la memoria • Podría evitarse esta actualización • Nuevo estado (O) Owned • No es Exclusivo, existen otras copias • Es Propietario, suministra los datos en caso de: • BusRd B • BusRdX B

  43. Protocolo MOESI: invalidación de 5 estados (2) Propiedad O M Validez S E Exclusividad I • Estados • M - Modified (dirty) • O - Owned (dirty y compartido) • E - Exclusive (sin modificar ni compartir) • S - Shared • I - Invalid

  44. Protocolo MOESI: invalidación de 5 estados (3) PrWr/ BusRdX BusRd/ Flush’ BusRdX/ Flush’ M Flush’: se envia el bloque a otra cache O BusRd/Flush’ PrRd/ ― E PrRd/ BusRd S I Nota: solo nuevas transiciones

  45. Hacer ejemplo de folios

  46. Problema protocolos invalidación • Problema patrones migratorios • Cuando hay un patrón de acceso migratorio, los protocolos basados en invalidación son ineficientes. • Ejemplo: flag de sincronización Proceso 0 Proceso 1 while(true){ while (flag != 0); do_work_P0() flag=1; } while(true){ while (flag != 1); do_work_P1() flag=0; } ¿Cuantas transacciones son necesarias en un protocolo de invalidación?

  47. Protocolo Dragón: actualización 4 estados (1) E SC Yo y otros pero no la memoria, soy el propietario Potencialmente 2 más procesadores tienen este bloque. La memoria principal no está actualizada y este procesador es responsable de actualizar la memoria principal cuando este bloque sea reemplazado Yo y la memoria El bloque no ha sido modificado y sólo hay una cache con copia Yo, otros y puede que la memoria, pero no soy el propietario Potencialmente 2 o más procesadores tienen este bloque. La memoria principal puede estar o no actualizada Yo y nadie más El bloque ha sido modificado, la memoria no está actualizada y esta es la única copia (Propiedad Exclusiva) SM M NP Solo Memoria Estado Implícito SC: Shared Clean SM: Shared Modified Dragón de Xerox PARC (1984) SunSparcServer (1997) 47

  48. Protocolo Dragón: actualización 4 estados (2) • Eventos Procesador • PrRd / PrWr • PrRdMiss / PrWrMiss • Transacciones del Bus • BusRd / BusWB / Flush • BusUpd (Nueva) • Broadcast de la palabra modifica a todos los procesadores para que se actualicen las copias • Señal S • Para soportar el estado Exclusivo (igual que MESI)

  49. Protocolo Dragón: actualización 4 estados (3) BusRd/— E SC BusRd/— PrRdMiss (S) / BusRd PrRdMiss (S) / BusRd BusRd/Flush SM M BusRd/Flush 49

  50. Protocolo Dragón: actualización 4 estados (4) BusUpd/ Actualización E SC BusUpd/ Actualización PrWr/— PrWrMiss/ BusRd(S);BusUpd PrWrMiss/ BusRd(S); BusUpd PrWr/BusUpd(S) Broadcast de la palabra modifica a todos los procesadores para que se actualicen las caches relevantes PrWr/ BusUpd(S) SM M PrWr/BusUpd(S) PrWr/— PrWr/BusUpd(S) 50

More Related