La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Coherencia, Consistencia y Sincronización.

Presentaciones similares


Presentación del tema: "Coherencia, Consistencia y Sincronización."— Transcripción de la presentación:

1 Coherencia, Consistencia y Sincronización.
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)
Escalabilidad P1 Pn Switch Memoria Principal Cache Compartida -Entrelazadas (2-8) (e.g. Alliant FX-8, Encore& Sequent) Primer Nivel $ PG 9 Y 10 DEL DOCUMENTO DEL SMP-CACHE P1 Pn Bus Compartido Dance-hall $ $ Red de Interconexión Mem Mem Red de Interconexión Escalable $ Mem Memoria Distribuida (NUMA) P1 Pn Memoria Compartida (SMP, UMA)

4 Alternativas de implementación (2)
SMP basado en Bus Compartido Mayor éxito (multitarea y grano fino) P1 Pn Problemas Coherencia Ancho de Banda limitado $ $ Bus PG 9 Y 10 DEL DOCUMENTO DEL SMP-CACHE 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
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 Pr ocess P Q Addr ess Y X Send X, Q, t Receive , t Match Local pr addr ess space

6 Jerarquía de memoria extendida
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
(P1) Load U (P3) Load U (P3) Store U (P2) Load U 4 U = ? Load U 5 Memoria Dispositivos I/O P 1 $ 2 3 U: 5 3 U: 7 Store U 2 U: 5 Load U 1 U: 5 Load U Protocolos de coherencia de cache Siguen la pista del estado de cualquier bloque de datos compartido para evitar incoherencias

8 Soluciones de Grano Grueso (1)
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) MMu L2 DL1 Memoria DMA Controlador I/O DOCUMENTO DE SMPCACHE, PAG 11

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) Desde esta traspa (1) hasta la (3), trata de explicar de modo preciso la definición de sistema coherente. Todo esto está bien en dos sitios: 1) Pg del H&P 2) Pg del Culler (Lo tengo impreso en folios) Volver sobre el ejemplo de traspa 12: Para la posición U ¿Se cumple? Para ello, tengo desarrollado el ejemplo en un folio 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)
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 Orden hipotético U

13 Sistema de Memoria Coherente (3)
Implícito: Propagación + Serialización de escrituras 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

14 Políticas para mantener la coherencia (1)
Actualización en Escritura Invalidación en Escritura Políticas para mantener la coherencia PG. 208 del H&P !!!!

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 PG. 208 del H&P !!!! Puedo poner en pizarra el ejemplo del H&P de la Figura 4.4.

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 Puedo hacer ejemplo de esta política sobre el mismo ejemplo de H&P de la Figura 4.4.

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 Descripción de estos dos esquemas, pg. 208 de H&P. Observación del Bus Protocolos Basados en Directorio Se indica en qué caches existe copia y en qué estado

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

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 Al terminar esta, hacer el ejemplo del Culler Pg Desde “The simplest illustration …” hasta el Example 5-2 incluido.

20 Estado de un bloque en MEMORIA
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. Pg. 268 y 269 del Culler S1 Acciones asociadas S2 Estado de un bloque en MEMORIA

21 Vector de Estados de un bloque en MEMORIA
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. Pg. 268 y 269 del Culler S1 Acciones asociadas p1 p2 pN S2 Vector de Estados de un bloque en MEMORIA

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

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 /-- Culler pg. 269 a 271 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 Culler pg. 269 a 271

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 Culler pg. 269 a 271

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 Culler pg. 269 a 271 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 PrRd/BusRd V Replace/— Tengo un ejemplo en folio que les hago al terminar esta traspa. IMPORTANTE ACLARAR: Todo lo que vemos, es a nivel conceptual, no nos metemos en los detalles de cómo se implementaría. El protocolo, habla de bloques de memoria, no de marcos de bloque !!! Por ejemplo, un bloque que está modificado, y por lo que sea, hay que reemplazarlo, pasará a invalido. El otro bloque, que reemplazará a ese, y que por ejemplo, se va a usar para lectura, pasará a Válido. Hay que imaginar lo que vimos en la traspa del vector de estados, en la que cada bloque de memoria tiene un estado en cada cache. 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)
Valido: Shared Modificado: Exclusivo Nueva transacción: BusRdx (Lectura con Invalidación) BusRdX / Flush PrRd/— PrWr/— Replace / Flush BusRd/ Flush M S I PrWr/BusRdX PrRd/BusRd 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 PrWr/ BusRdX PrRd /— BusRdX/- BusRd/— El bloque está presente en la cache y no ha sido modificado La memoria está actualizada Otras caches adicionales pueden tener copia

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

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

33 Protocolo MSI: invalidación de 3 estados (6)
5. PrRd U U S 7 U S 7 U S 7 BusRd Memoria BusRd U I/O Memoria U : 7 Operación Estado P1 Estado P2 Estado P3 Transacción Datos Después de esto, hacer el ejemplo que tengo en los folios Bus Suministrados P1 Lee U BusRd Memoria P3 Lee U S S BusRd Memoria P3 escribe U I M BusRdX Memoria (BusUpg) (ignorados) P1 Lee U S S BusRd Cache P3 P2 Lee U

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

35 Protocolo MSI: Decisiones de bajo nivel
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 M S I BusRd / Envio BusRd/ Envio

36 Protocolo MESI: Invalidación de 4 estados (1)
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. I S M BusRd BusRdX

37 Protocolo MESI: Invalidación de 4 estados (2)
(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)
(S): se activa la señal share ! Sólo nuevas transiciones ! BusRdX: Lectura exclusiva PrWr/ E PrRd (S)/ BusRd BusRdX/- BusRd/- PrRd/- PrRd (S) / BusRd S Sólo señalamos las nuevas transiciones!! Volver a poner el MSI y ver que, por ejemplo, si está I y hay un PrWr, se pasa a M al igual que antes. 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)
1. PrRd U U E 5 Memoria BusRd BusRd U Señal shared (S) OR-cableada I/O Memoria U : 5 Operación Estado P1 Estado P2 Estado P3 Transacción Datos 1) Hacer el ejemplo completo que sale en las traspas, haciendo hincapié en la OR-cableada 2) Meter este ejemplo adicional: La ventaja del MESI se ve muy bien en esta traspa: Si el procesador 1, tras leer el dato U, lo modifica, las transiciones en MESI son: Pasa a Exclusivo, y a continuación, para modificarlo, no tiene que poner mensaje en el bus, sino simplemente pasarlo a Modificado. En el caso de MSI: Pasaría a Compartido, y a continuación, para modificarlo, tendría que mandar mensaje al bus de invalidación, y a continuación ponerlo en Modificado. Para implementarlo, hay una nueva señal SHARE, que indica si hay ya alguna cache que tenía el dato, o no. Es simplemente una OR cableada, que será 1 en cuanto una cache ya tuviera el dato, y será 0 si ninguna lo tenía. 3) Ejemplo de folios. 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)
2. PrRd U U E S U 5 BusRd U Memoria BusRd Señal shared (S) OR-cableada I/O Memoria U : 5 Operación Estado P1 Estado P2 Estado P3 Transacción Datos Bus Suministrados P1 Lee U E BusRd Memoria 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)
M - Modified (dirty) O - Owned (dirty y compartido) E - Exclusive (sin modificar ni compartir) S - Shared I - Invalid O M E S I Propiedad Validez Exclusividad

44 Protocolo MOESI: invalidación de 5 estados (3)
Flush’: se envia el bloque a otra cache PrWr/ BusRdX BusRd/ Flush’ O BusRdX/ Flush’ 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)
SC: Shared Clean E SM M SC 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 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 nadie más El bloque ha sido modificado, la memoria no está actualizada y esta es la única copia (Propiedad Exclusiva) Solo Memoria Estado Implícito NP SM: Shared Modified Dragón de Xerox PARC (1984) Sun SparcServer (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/— BusRd/Flush E M SM SC PrRdMiss (S) / BusRd PrRdMiss (S) / BusRd 49

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

51 Protocolo Dragón: actualización 4 estados (5)
Reemplazo de un bloque en estado SC o SM ¿Debe hacerse un broadcast al resto de las controladores para informar de dicho reemplazo (Transacción Reemplazo)? En caso de que haya sólo otra copia, permite que pase al estado E o M (no genera actualizaciones) Transacción Reemplazo puede ser menos crítica que BusUpd Estado SM ¿Puede eliminarse? DEC Firefly: La transacción BusUpd también actualiza la memoria El Protocolo Dragón asume que la actualización de SRAM caches es menos costosa que la actualización de memoria.

52 Protocolo Dragón: actualización 4 estados (6)
1. PrRd U U E 5 Memoria BusRd BusRd U Señal shared (S) OR-cableada I/O Memoria U : 5 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 52 P2 Lee U

53 Protocolo Dragón: actualización 4 estados (7)
2. PrRd U U U SC 5 E 5 BusRd Memoria BusRd U Señal shared (S) OR-cableada I/O Memoria U : 5 Operación Estado P1 Estado P2 Estado P3 Transacción Datos Bus Suministrados P1 Lee U E BusRd Memoria P3 Lee U P3 escribe U P1 Lee U P2 Lee U

54 Protocolo Dragón: actualización 4 estados (8)
3. PrWr U BusUpd Cache P3 SC SM 7 U SC 5 U SC 5 Señal shared (S) OR-cableada I/O Memoria U : 5 Operación Estado P1 Estado P2 Estado P3 Transacción Datos Bus Suministrados P1 Lee U E BusRd Memoria P3 Lee U SC BusRd Memoria P3 escribe U P1 Lee U P2 Lee U

55 Protocolo Dragón: actualización 4 estados (9)
4. PrRd U P1 P2 P3 BusUpd Cache P3 SC SM U SC 7 U SM 7 Señal shared (S) OR-cableada I/O Memoria U : 5 Operación Estado P1 Estado P2 Estado P3 Transacción Datos Bus Suministrados P1 Lee U E BusRd Memoria P3 Lee U SC BusRd Memoria P3 escribe U P1 Lee U Cache P1 SC SM P2 Lee U

56 Protocolo Dragón: actualización 4 estados (10)
5. PrRd U P3 BusUpd Cache P3 SC SM U SC 7 SC SM U 7 U SM 7 Cache P3 BusRd BusRd U Señal shared (S) OR-cableada I/O Memoria U : 5 Operación Estado P1 Estado P2 Estado P3 Transacción Datos Bus Suministrados P1 Lee U E BusRd Memoria P3 Lee U SC BusRd Memoria P3 escribe U P1 Lee U Cache P1 SC SM P2 Lee U

57 Invalidación vs Actualización (1)
Patrón 1 for i = 1 to k P1(write, x); P2-PN-1 (read, x); end for I Patrón 2 for j = 1 to m P1 (write, x); end for j P2 (read, x); end for i una escritura antes de lectura varias escrituras antes de lectura

58 Invalidación vs Actualización (2)
Patrón 1 N = 16, M = 10, K = 10 Actualización Iteración 1: N fallos de cache (70 bytes) Iteraciones restantes: 1 actualización/iteración (14 bytes; 6 cntrl, 8 datos) Tráfico total = 16*70 + 9*14 = 1246 bytes Invalidación Iteraciones restantes: P1 invalida (6bytes, BusUpgrd), los otros producen fallos de lectura (70bytes) Tráfico total = 16*70 + 9*6 + 15*9*17 = 10,624 bytes

59 Invalidación vs Actualización (3)
Patrón 2 N = 16, M = 10, K = 10 Actualización Iteración 1: 2 fallos de cache (70 bytes), M actualizaciones (14 bytes; 6 cntrl, 8 datos) Iteraciones restantes: M actualización/iteración Tráfico total = 2* *14 = 1540 bytes Invalidación Iteración 1: 2 fallos de cache (70 bytes) Iteraciones restantes: P1 invalida (6bytes, BusUpgrd), P2 produce fallo de lectura (70bytes) Tráfico total = 2*70 + 9*(70+6) = 824 bytes

60 Invalidación vs Actualización (4)
¿Qué sucede en cargas de trabajo reales? Los protocolos de actualización pueden generar demasiado tráfico Es posible reducir/limitar actualizaciones (Competitive Snooping) Actualmente Protocolos de actualización son difíciles de implementar correctamente ( problema consistencia) Se utilizan raramente En un futuro Puede suceder lo mismo que ahora Los multiprocesadores en un chip pueden hacerlos más atractivos Más ancho de banda (intra-chip) Más fácil predecir comportamiento (temporización)

61 Coherencia cache escalable
Esquema Multiprocesadores escalables Coherencia cache Protocolos basados en Directorio Organización del Directorio Directorios planos basados en memoria Directorios planos basados en cache Esquema de Directorio simple Resumen

62 Multiprocesadores Escalables (1)
Escalabilidad Ancho de banda de la memoria debe aumentar con el número de procesadores Solución Natural: Memoria Distribuida Ancho de banda red de interconexión escalable (latencia razonable) Facilidades de Expansión

63 Multiprocesadores Escalables (2)
Escalabilidad P1 Pn Switch Memoria Principal Cache Compartida Primer Nivel $ P1 Pn Bus Compartido Dance-hall $ $ Red de Interconexión Mem Mem Red de Interconexión Escalable $ Mem NUMA: Memoria Distribuida P1 Pn UMA, SMP

64 Multiprocesadores Escalables (3)
Red de Interconexión Escalable $ Mem NUMA: Acceso a Memoria no Uniforme P1 Pn Escalabilidad: Arquitectura NUMA Memoria Distribuida Red de Interconexión Escalable Conexiones punto a punto Fallos: Saber estado bloque en otras caches Si necesario, localizar copias (invalidarlas) Comunicarse con las otras copias: obtener datos, invalidarlas/actualizarlas Desafío: Arquitectura cc-NUMA Mantener coherencia mediante hw con granularidad de bloque cache al igual que en las máquinas basadas en bus Aproximaciones más utilizadas: Protocolos basados en Directorio Snoopy Jerárquico Jerarquía de 2 niveles

65 Protocolos basados en Directorio (1)
Coherencia cache mediante Directorios El orden total lo impone acceso al directorio No sirve el arbitraje del bus Cada bloque de memoria tiene asociado Estado en memoria Estado en Caches: Información Local En caso de que se produzca un fallo es necesario: Comunicación con el directorio Búsqueda de bloque Comunicación con los nodos Propagación Comunicaciones punto-a-punto No es necesario broadcast de direcciones de memoria

66 Protocolos basados en Directorio (2)
Escalabilidad determinada por: Rendimiento Demanda de BW (Tráfico): Transacciones de red por fallo (multiplicado por la frecuencia de fallos) Latencia: Transacciones red en camino crítico del fallo (espera) Estos dos factores dependen de La organización del directorio Cómo esté optimizado el flujo de transacciones de red Sobrecarga de memoria Depende de la organización del directorio

67 Organización del Directorio (1)
Centralizado Distribuido Esquemas de Directorio Jerárquico Plano Como Encontrar la Información de Directorio: Basados en Mem. Basados en Cache Como Localizar las copias:

68 Organización del Directorio (2)
Esquema Jerárquico Información en estructura de datos jerárquica Nodos de procesamiento Directorio (level-1) Directorio (level-2)

69 Organización del Directorio (3)
Ventajas de directorios jerárquicos Fallo a bloque con origen lejano: Más rápido Problemas Transacciones más numerosas que en directorios planos Requisitos de latencia y ancho de banda mucho mayores

70 Organización del Directorio (4)
Esquema Plano Información del bloque en lugar fijo (nodo home/origen) Dirección del bloque (hashing) Fallo: Transacción al nodo origen para consultar el directorio Esquema Plano Basado en Memoria Información de bloque en el nodo origen (home) del bloque Stanford DASH/FLASH, SGI Origin, MIT Alewife, HAL Esquema Plano Basado en Cache Información de bloque distribuida entre copias IEEE SCI, Sequent NUMA-Q

71 Directorios planos basados en memoria (1)
Red de Interconexión P1 PN Bits de Presencia $ $ Memoria Memoria Directorio Bit de Modificación Directorio: 1 bit de presencia por nodo Estado: uno o más bits Más simple: un único bit (bit de modificación) Estado del bloque en la cache: Cualquiera de los anteriores: MSI, MESI, MOESI, etc. 1) Culler, Pg 521. Para ello, tengo las próximas 6 traspas. 2) Hacer ejemplo de folios.

72 Directorios planos basados en memoria (2)
Funcionamiento del protocolo: Supongamos: Estados en cache MSI, 1 nivel de cache, 1 procesador por nodo Nodo i: Fallo de lectura/escritura. Comprobar a que memoria hay que acceder. Si local, acceder directamente. Si remota, establecer comunicación con ella. En la memoria, si fallo de lectura: Dirty_bit=OFF  Enviar bloque de memoria, y actualizar bit_presencia[i] Dirty_bit=ON  Controlador responde con identidad del nodo que lo tiene. Actualizar bit_presencia[i] y Dirty_bit=OFF. Se establece comunicación con el nodo. En el nodo se pasa el estado a Shared, y se envía el dato. En la memoria, si fallo de escritura: Dirty_bit=OFF  La memoria envía la lista de nodos que tienen el bloque (en nodos se cambia el estado a Inválido). Además manda el bloque a cache i, actualiza cada bit_presencia y pone dirty_bit a ON. Dirty_bit=ON  Se avisa a nodo que tenga el bloque de que lo envíe a la cache i. Se invalida la copia de ese nodo que tiene el bloque. Además, se actualiza cada bit_presencia y deja dirty_bit a ON. WriteBack: Se ponen a OFF tanto dirty_bit como bit_presencia[i] En la traspa que sigue, explicamos esto en más detalle.

73 Directorios planos basados en memoria (3)
Fallo de lectura sobre Bloque Shared RdRequest RdReply 1 2 Home Fallo de Lectura Remoto, sobre un dato Shared, que según MSI seguirá en Shared: Se envía petición al nodo home (contiene la información de directorio) (1) 1 - Obtener el bloque de la memoria principal 2 - Enviar el bloque al controlador del nodo peticionario (Estado Compartido) (2) 3 - presencia[i] = ON; Local

74 Directorios planos basados en memoria (4)
Fallo de lectura sobre Bloque Modified 4 HOP TRANSACTION Home 1 Data 4 Revision WB RdReq Owner 2 Local Fallo de Lectura Remoto, sobre un dato Modificado, que según MSI pasará a Shared: Se envía petición al nodo home (contiene la información de directorio) (1) 1 - Enviar al controlador del nodo peticionario la identidad del nodo Dirty (2) 2- El nodo peticionario solicita el bloque al propietario (3) 3 - Propietario: Cambia estado a compartido Suministra bloque al peticionario (4a) Suministra bloque al origen (4b) Origen: dirty-bit = OFF; presencia[i] = ON; Intervention: Donwngrade, send me, WB 3 Owner

75 Directorios planos basados en memoria (5)
Fallo de escritura sobre Bloque Shared Home 1 RdXReq Reader ReaderList 2 3 Fallo de Escritura Remoto sobre Shared, que pasará a Modificado en la local, y se invalidará en todas las que lo compartían: Se envía petición al nodo home (contiene la información de directorio) (1) 1 - Enviar petición de Invalidación a otras copias (nodos con bit de presencia a 1) (3) 2 - Esperar Respuesta de dichos nodos (La escritura se ha completado respecto a dichos nodos) (4) 3 - Proporcionar bloque al nodo i (dirty) (2) 4 - Entradas de directorio OFF excepto: dirty-bit = ON; presencia [i] = ON; Reader Invalidate Local ack 4

76 Directorios planos basados en memoria (6)
Fallo de escritura sobre Bloque Modified 4 HOP TRANSACTION Home 1 Revision 4 RdXReq Owner 2 Local Transfer Owner 3 Fallo de Escritura Remoto sobre Modificado, que pasará a Invalido en la que lo tenía, y a Modificado en la Local: Se envía petición al nodo home (contiene la información de directorio) (1) 1 - Enviar al controlador del nodo peticionario la identidad del nodo Dirty (2) 2 - El nodo peticionario solicita el bloque al propietario 3 - Propietario: Invalida su copia Suministra bloque al peticionario (dirty) 4 - Origen: dirty-bit = ON; presencia[i] = ON; Owner 4 OwnerShip

77 Hacer ejemplo de folios

78 Directorios planos basados en memoria (7)
Rendimiento en las Escrituras (mensajes de invalidación) Mensajes (BW): proporcional nodos que comparten el bloque Mensajes en camino crítico (Latencia): Todos disponibles en nodo origen Envío en paralelo  VENTAJA PROBLEMA !! : Sobrecarga de almacenamiento: M bloques de memoria: proporcional a Nproc* M Tamaño de línea: 64 bytes 64 nodos: sobrecarga del directorio 12.5% 256 nodos: sobrecarga del directorio 50% 1024 nodos: sobrecarga del directorio 200% Ampliar por Culler Pg. 522 ( Scaling)

79 Directorios planos basados en cache (1)
Existe una memoria principal origen de cada bloque En lugar de vector de bits  Puntero nodo cabecera con copia Entrada en el nodo origen tiene bits de estado Resto de nodos con copia: Lista doblemente enlazada, distribuida P Cache Memoria Principal (Home) Nodo cabecera Nodo 1 Nodo 2

80 Directorios planos basados en cache (2)
Fallo de lectura: Nodo envía petición al nodo origen de ese bloque para determinar la identidad del nodo cabecera Nodo origen responde con la identidad del nodo cabecera Nodo envía solicitud inserción al nodo cabecera en la cabeza de la lista (se convierte en el nuevo nodo cabecera) Los datos son enviados por Nodo origen si tiene copia Nodo cabecera en caso contrario (siempre tiene la última copia) Reemplazamiento  Eliminación de la lista Complejo: coordinación con nodo anterior y posterior

81 Directorios planos basados en cache (3)
Escritura: Nodo puede ser nuevo, o estar ya en la lista de nodos que comparten el bloque Recorre el resto de la lista para invalidar las sucesivas copias. Acuses de recibo de invalidaciones se envían al nodo que realiza la escritura Los datos, si no los tenía ya (fallo), son enviados por Nodo origen si tiene copia Nodo cabecera en caso contrario (siempre tiene la última copia) Rendimiento en Escrituras (mensajes de invalidación) Número de mensajes (BW): proporcional al número de nodos que comparten el bloque (semejante a los basados en memoria), pero están distribuidos Número de mensajes en el camino crítico (Latencia): también es proporcional al número de nodos que comparten el bloque (los mensajes se serializan). Esto es peor que en los de memoria !! Hacer Ejemplo de folios Hacer ejemplo

82 Directorios planos basados en cache (4)
Ventajas con esquemas basados en memoria Menor sobrecarga de directorio. Punteros siguiente y anterior: Proporcional al número de bloques de cache en la máquina (mucho menor que el número de bloques de memoria) La lista enlazada guarda el orden realizado de accesos El trabajo realizado por los controladores para enviar las invalidaciones no está centralizado en un nodo sino distribuido entre los nodos que comparten el bloque

83 Escalabilidad Directorio
Para mejorar el rendimiento, a nivel de protocolo, pretendemos: Reducir la demanda de BW  Reducir el número de transacciones generadas por cada operación de memoria. Reducir la latencia de cada operación  Reducir el número de operaciones del camino crítico. Reducir la ocupación del directorio  Tipo de organización. Por ejemplo: Protocolos basados en memoria  Las invalidaciones se pueden enviar en paralelo, reduciendo el BW. Protocolos basados en cache  Hay que enviar invalidaciones de modo secuencial. Protocolos basados en memoria  El tamaño del directorio es proporcional al número de bloques de memoria. Protocolos basados en cache  El tamaño del directorio es proporcional al número de bloques de cache. Último párrafo de 535 y primero de 536, Culler

84 ¿Cómo reducir la sobrecarga del directorio?
Sobrecarga Memoria ¿Cómo reducir la sobrecarga del directorio? Estrategia 1: Stanford DASH Incrementar el tamaño de bloque Utilizar nodos multiprocesador (solo 1 bit por nodo) Estrategia 2: Reducción de Anchura (cada entrada directorio que no sea proporcional a P) Punteros a los nodos que comparten dicho bloque Ejemplo con 1024 nodos y 100 punteros de 10 bits Esto viene en la pag. 525 del Culler Ejemplo: 256 procesadores, 4 procesadores por nodo, línea de 128 B : Sobrecarga: 6.25% Problema: Sobrecarga de Directorio Ejemplo 1024 Nodos: Punteros de 10 bits (log P bits) Directorio con 100 punteros permite ahorrar espacio Estrategia 3: Reducción Altura Sólo una fracción muy pequeña de los bloques de la memoria estarán replicados en las caches en un momento dado, la mayor parte de las entradas del directorio permanecerán sin usar Idea: organizar el directorio como una cache, en lugar de tener una entrada por cada bloque Estrategia 3: Reducción de Altura (Reducir el número de entradas del directorio) Sólo una fracción muy pequeña de los bloques de la memoria estarán replicados en las caches en un momento dado Organizar el directorio como una cache

85 Posible mejora en protocolo basado en memoria
Intervention & Reply Forwarding: Obtener Bloque Modificado Reducción del número de mensajes (de 5 a 4) Reducción de mensajes en camino crítico (de 4 a 3). Intervention (ID local) 2 3 HOP TRANSACTION Home 1 RdReq /RdXReq Data/ OwnerShip 3 Revision Data 4 Revision 3 Local Esto lo explica en Culler, pg. 536 y 537. Primero comparar con L-32, “Directorios planos basados en memoria (4) y (6)” Owner


Descargar ppt "Coherencia, Consistencia y Sincronización."

Presentaciones similares


Anuncios Google