La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Multiprocesadores Coherencia, Consistencia y Sincronización.

Presentaciones similares


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

1 Multiprocesadores Coherencia, Consistencia y Sincronización.

2 2 Bibliografía 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 3 Alternativas de implementación (1) Escalabilidad $ $ Mem Red de Interconexión Memoria Compartida (SMP, UMA) Mem Bus Compartido Dance-hall Switch Memoria Principal Cache Compartida -Entrelazadas (2-8) (e.g. Alliant FX-8, Encore& Sequent) Primer Nivel $ P1P1 PnPn P1P1 PnPn Red de Interconexión Escalable $ $ Mem Memoria Distribuida (NUMA) P1P1 PnPn

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

5 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 Process PProcessQ Address Y AddressX SendX, Q, t ReceiveY, P, t Match Local process address space Local process address space

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

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

8 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

9 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 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 11 Sistema de Memoria Coherente (1) 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 ¿Qué significa que un sistema de memoria es coherente? (Definición menos formal)

12 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 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 14 Políticas para mantener la coherencia (1) Actualización en Escritura Invalidación en Escritura Políticas para mantener la coherencia

15 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 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 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 Se indica en qué caches existe copia y en qué estado Protocolos Basados en Directorio

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

19 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 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 S2 Estado de un bloque en MEMORIA Acciones asociadas

21 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 S2 p1p2pN Vector de Estados de un bloque en MEMORIA Acciones asociadas

22 22 Diagrama de Estados en Uniprocesador Inicial : bloques inválidos Lectura : Inválido Válido Puede generar reemplazamiento Escritura : no cambia el estado V I Lectura / -- Escritura / Memoria Fallo Lectura / Memoria 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

23 23 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 Protocolo Snoopy Lecturas: PrRd Escrituras: PrWr Transacciones del BUS: BUS_Rd BUS_Wr V I PrRd / -- PrWr / BUS_Wr Pr_Rd / BUS_Rd Protocolo Snoopy de 2 Estados (2) BUS_Wr /-- Ejemplo de folios

24 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 1. Operaciones tratadas en el orden en que son emitidas 2. Valor devuelto por última lectura es el último escrito

25 25 Protocolo Snoopy de 2 Estados (4) 2. 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 26 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 Protocolo Snoopy de 2 Estados (5) Solución: utilizar post-escritura (Write-back), más compleja la propagación y serialización…

27 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 28 PrRd/ PrWr/BusRd Fallo Escritura PrWr/ Acierto Escritura V M I Replace/BusWB PrRd/BusRd Replace/ PrWr/ Acierto Escritura Recordatorio: caches write-back (2) Hacer ejemplo folios

29 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 30 Protocolo MSI: invalidación de 3 estados (3) PrWr/BusRdX PrRd/BusRd M S I PrWr/ BusRdX PrRd / BusRdX/- BusRd/ BusRdX / Flush PrRd/ PrWr/ Replace / Flush BusRd/ Flush 1. Valido: Shared 2. Modificado: Exclusivo 3. Nueva transacción: BusRdx (Lectura con Invalidación) 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 El bloque está presente en la cache y no ha sido modificado La memoria está actualizada Otras caches adicionales pueden tener copia

31 31 Protocolo MSI: invalidación de 3 estados (4) 3. PrWr U I/O OperaciónEstado P1Estado P2Estado P3Transacción Bus Datos Suministrados P1 Lee U P3 Lee U P3 escribe U P1 Lee U P2 Lee U Memoria BusRd U S 5 S US5 SSBusRdMemoria BusRdX (BusUpg) Memoria (ignorados) BusRdX U I IM M7 Memoria U : 5 P1P2P3

32 32 Protocolo MSI: invalidación de 3 estados (5) I/O OperaciónEstado P1Estado P2Estado P3Transacción Bus Datos Suministrados P1 Lee U P3 Lee U P3 escribe U P1 Lee U P2 Lee U Memoria BusRd U I S UM7 SSBusRdMemoria BusRdX (BusUpg) Memoria (ignorados) Memoria U : 5 P1P2P3 IM 4. PrRd U BusRd U BusRd Cache P3 Flush U SS S S 7 7

33 33 Protocolo MSI: invalidación de 3 estados (6) I/O OperaciónEstado P1Estado P2Estado P3Transacción Bus Datos Suministrados P1 Lee U P3 Lee U P3 escribe U P1 Lee U P2 Lee U Memoria BusRd U S S US7 SSBusRdMemoria BusRdX (BusUpg) Memoria (ignorados) Memoria U : 7 P1P2P3 IM 7 BusRd Cache P3 SS BusRdMemoria BusRd U US7 SSS 5. PrRd U

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

35 35 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 Protocolo MSI: Decisiones de bajo nivel

36 36 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. Protocolo MESI: Invalidación de 4 estados (1) ISM BusRdBusRdX

37 37 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) Protocolo MESI: Invalidación de 4 estados (2)

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

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

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

41 41 Protocolo MESI: Invalidación de 4 estados (5) I/O OperaciónEstado P1Estado P2Estado P3Transacción Bus Datos Suministrados P1 Lee U P3 Lee U P3 escribe U P1 Lee U P2 Lee U Memoria U : 5 P1P2P3 Señal shared (S) OR-cableada Memoria BusRd U E E 2. PrRd U S US5 SS BusRd U MemoriaBusRd

42 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 43 Protocolo MOESI: invalidación de 5 estados (2) Estados 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 44 M S I Flush: se envia el bloque a otra cache E Protocolo MOESI: invalidación de 5 estados (3) Nota: solo nuevas transiciones O BusRd/ Flush BusRdX/ Flush BusRd/Flush PrRd/ PrWr/ BusRdX PrRd/ BusRd

45 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 46 while(true){ while (flag != 0); do_work_P0() flag=1; } while(true){ while (flag != 1); do_work_P1() flag=0; } Proceso 0Proceso 1 ¿Cuantas transacciones son necesarias en un protocolo de invalidación?

47 Protocolo Dragón: actualización 4 estados (1) 47 E SMM SC SC: Shared Clean SM: Shared Modified 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) 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 Solo Memoria Estado Implícito NP Dragón de Xerox PARC (1984) Sun SparcServer (1997)

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) 48

49 Protocolo Dragón: actualización 4 estados (3) 49 E MSM SC BusRd/ BusRd/Flush BusRd/ PrRdMiss (S) / BusRd PrRdMiss (S) / BusRd

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

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. 51

52 Protocolo Dragón: actualización 4 estados (6) 52 I/O OperaciónEstado P1Estado P2Estado P3Transacción Bus Datos Suministrados P1 Lee U P3 Lee U P3 escribe U P1 Lee U P2 Lee U Memoria U : 5 P1P2P3 Señal shared (S) OR-cableada 1. PrRd U Memoria BusRd BusRd U U E 5 E

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

54 54 Protocolo Dragón: actualización 4 estados (8) I/O OperaciónEstado P1Estado P2Estado P3Transacción Bus Datos Suministrados P1 Lee U P3 Lee U P3 escribe U P1 Lee U P2 Lee U Memoria U : 5 P1P2P3 Señal shared (S) OR-cableada Memoria BusRd U 5 E BusRdMemoria USC5 SC 3. PrWr U BusUpd Cache P3 BusUpd SCSM 77

55 55 Protocolo Dragón: actualización 4 estados (9) I/O OperaciónEstado P1Estado P2Estado P3Transacción Bus Datos Suministrados P1 Lee U P3 Lee U P3 escribe U P1 Lee U P2 Lee U Memoria U : 5 P1P2P3 Señal shared (S) OR-cableada Memoria BusRd U 7 E BusRdMemoria USM7 SCSC 4. PrRd U BusUpd Cache P3 SCSM Cache P1 SCSM

56 56 Protocolo Dragón: actualización 4 estados (10) I/O OperaciónEstado P1Estado P2Estado P3Transacción Bus Datos Suministrados P1 Lee U P3 Lee U P3 escribe U P1 Lee U P2 Lee U Memoria U : 5 P1P2P3 Señal shared (S) OR-cableada Memoria BusRd U 7 E BusRdMemoria USM7 SCSC BusUpd Cache P3 SCSM Cache P1 SCSM 5. PrRd U Cache P3 BusRd BusRd U SC SM USC7

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

58 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 Iteración 1: N fallos de cache (70 bytes) 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 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 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 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 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 63 Multiprocesadores Escalables (2) Escalabilidad $ $ Mem Red de Interconexión UMA, SMP Mem Bus Compartido Dance-hall Switch Memoria Principal Cache Compartida Primer Nivel $ P1P1 PnPn P1P1 PnPn Red de Interconexión Escalable $ $ Mem NUMA: Memoria Distribuida P1P1 PnPn

64 64 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 Multiprocesadores Escalables (3) 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 Red de Interconexión Escalable $ $ Mem NUMA: Acceso a Memoria no Uniforme P1P1 PnPn

65 65 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 Protocolos basados en Directorio (1) 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 66 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 Protocolos basados en Directorio (2)

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

68 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 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 70 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 Organización del Directorio (4)

71 71 Directorios planos basados en memoria (1) 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. N M Directorio Bits de Presencia Red de Interconexión $ P1P1 Memoria $ PNPN Bit de Modificación Memoria

72 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. 1. Comprobar a que memoria hay que acceder. Si local, acceder directamente. Si remota, establecer comunicación con ella. 2. En la memoria, si fallo de lectura: 1.Dirty_bit=OFF Enviar bloque de memoria, y actualizar bit_presencia[i] 2.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. 3. En la memoria, si fallo de escritura: 1.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. 2.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. 4. WriteBack: Se ponen a OFF tanto dirty_bit como bit_presencia[i]

73 73 Directorios planos basados en memoria (3) Fallo de lectura sobre Bloque Shared Home Local RdRequest RdReply 1 2

74 74 Directorios planos basados en memoria (4) Fallo de lectura sobre Bloque Modified Local Owner 2 RdReq 1 Home 3 Owner Intervention: Donwngrade, send me, WB Data 4 Revision WB 4 4 HOP TRANSACTION

75 75 Directorios planos basados en memoria (5) Fallo de escritura sobre Bloque Shared Local ReaderList 2 RdXReq 1 Reader 3 Invalidate ack 4 Reader Home

76 76 Directorios planos basados en memoria (6) Fallo de escritura sobre Bloque Modified Local Owner 2 RdXReq 1 Home 3 Transfer Owner Owner OwnerShip 4 4 HOP TRANSACTION Revision 4

77 77 Hacer ejemplo de folios

78 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 N proc * 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% Sobrecarga de almacenamiento: M bloques de memoria: proporcional a N proc * 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%

79 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 P P Memoria Principal (Home) Nodo cabecera Nodo 1Nodo 2

80 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 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

82 82 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 Directorios planos basados en cache (4)

83 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. Por ejemplo: 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.

84 84 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 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 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 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 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). Local RdReq /RdXReq 1 Home Owner Intervention (ID local) 2 3 HOP TRANSACTION Data/ OwnerShip 3 Revision 3 Data 4 Revision 3


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

Presentaciones similares


Anuncios Google