Multiprocesadores
description
Transcript of Multiprocesadores
MultiprocesadoresMultiprocesadores
Coherencia, Consistencia y Sincronización.
2
BibliografíaBibliografí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 Alternativas de implementación (1)(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 $
P1 Pn
P1 Pn
Red de Interconexión Escalable
$$Mem Mem
Memoria Distribuida (NUMA)
P1 Pn
4
Alternativas de implementación Alternativas de implementación (2)(2)
SMP basado en Bus Compartido
E/SMemoria
$ $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
CoherenciaAncho de Banda limitado
CoherenciaAncho de Banda limitado
P1 Pn
Mayor éxito(multitarea y grano fino)
5
Modelo de programaciónModelo 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 P Process Q
Address Y
Addr ess X
Send X, Q, t
Receive Y, P, tMatch
Local pr ocessaddress space
Local pr ocessaddress space
6
Jerarquía de memoria extendidaJerarquía de memoria extendida
CPU CPU 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
3
U: 7Store U
Memoria
Dispositivos I/O
P1
$ $ $
P2
P3
U: 51
U: 5
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 cacheProblema de la coherencia cache
Protocolos de coherencia de cache Siguen la pista del estado de cualquier bloque de datos compartido para evitar incoherencias
Siguen la pista del estado de cualquier bloque de datos compartido para evitar incoherencias
8
Soluciones de Grano Grueso Soluciones de Grano Grueso (1)(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
L2D
L1
Memoria DMA
ControladorI/O
9
Soluciones de Grano Grueso Soluciones de Grano Grueso (2)(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 Soluciones de Grano Grueso (3)(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 Sistema de Memoria Coherente (1)(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
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
Sistema de Memoria Coherente Sistema de Memoria Coherente (2)(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 UPy: Load U . . .Px: Store UPz: Load U
Orden hipotéticoU
13
Sistema de Memoria Coherente Sistema de Memoria Coherente (3)(3)
Implícito: Propagación + Serialización de escrituras
Escrituras visibles a
todos los procesadores
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
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 Políticas para mantener la coherencia (1)(1)
Actualización en EscrituraActualización en EscrituraInvalidación en EscrituraInvalidación en Escritura
Políticas para mantener la coherencia
15
Políticas para mantener la coherencia Políticas para mantener la coherencia (2)(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 Políticas para mantener la coherencia (3)(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 Políticas para mantener la coherencia (4)(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 SnoopyBuses: Protocolo Snoopy
Observación del Bus
Se indica en qué caches existe copia y en qué estado
Protocolos Basados en DirectorioProtocolos Basados en Directorio
18
Espionaje el bus
BusState Tag Datos
° ° °
Controlador de Cache + CACHE
Ld/St
CPUTransacciones
Relevantes
Sólo es necesario extender la funcionalidad del controlador de cache
Procolos Procolos Snoopy Snoopy (1)(1)
19
Procolos Procolos Snoopy Snoopy (2)(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 Procolos Snoopy Snoopy (3)(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
S2Estado de un bloque en MEMORIA
Acciones asociadas
21
Procolos Procolos Snoopy Snoopy (4)(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
S2p1 p2 pN
Vector de Estados de un bloque en MEMORIA
Acciones asociadas
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
Escritura / Memoria
Fallo Lectura / Memoria
Protocolo Protocolo SnoopySnoopy de 2 Estados de 2 Estados (1)(1)
Un único nivel de cache. Escritura Directa (write-through) Sin Asignación en Escritura (write non-allocate)
Política de Invalidación
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
PrWr / BUS_Wr
Pr_Rd / BUS_Rd
Protocolo Protocolo SnoopySnoopy de 2 Estados de 2 Estados (2)(2)
BUS_Wr /--
Ejemplo de folios
24
Protocolo Protocolo SnoopySnoopy de 2 Estados de 2 Estados (3)(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
Protocolo Protocolo SnoopySnoopy de 2 Estados de 2 Estados (4)(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 serializadasNo 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
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 Protocolo SnoopySnoopy de 2 Estados de 2 Estados (5)(5)
Solución: utilizar post-escritura (Write-back),más compleja la propagación y serialización…
27
Recordatorio: caches write-back Recordatorio: caches write-back (1)(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
PrRd/—
PrRd/—
PrWr/BusRdFallo Escritura
PrWr/—Acierto Escritura
V
M
I
Replace/BusWBPrRd/BusRd Replace/
—
PrWr/—Acierto Escritura
Recordatorio: caches write-backRecordatorio: caches write-back (2) (2)
Hacer ejemplo folios
29
Protocolo MSI: invalidación de 3 estados Protocolo MSI: invalidación de 3 estados (1)(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 Protocolo MSI: invalidación de 3 estados (3)(3)
PrWr/BusRdX
PrRd/BusRd
M
S
I
PrWr/ BusRdX
PrRd /—
BusRdX/-
BusRd/—
BusRdX / Flush
PrRd/—
PrWr/—
Replace / Flush
BusRd/Flush
1. Valido: Shared2. Modificado: Exclusivo3. 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
Protocolo MSI: invalidación de 3 estados Protocolo MSI: invalidación de 3 estados (4)(4)
3. PrWr U
I/O
Operación Estado P1 Estado P2 Estado P3 TransacciónBus
DatosSuministrados
P1 Lee U
P3 Lee U
P3 escribe U
P1 Lee U
P2 Lee U
MemoriaBusRd
U S 5
S — —
U S 5
S — S BusRd Memoria
BusRdX(BusUpg)
Memoria(ignorados)
BusRdX U
I
I — M
M 7
Memoria U : 5
P1 P2 P3
32
Protocolo MSI: invalidación de 3 estados Protocolo MSI: invalidación de 3 estados (5)(5)
I/O
Operación Estado P1 Estado P2 Estado P3 TransacciónBus
DatosSuministrados
P1 Lee U
P3 Lee U
P3 escribe U
P1 Lee U
P2 Lee U
MemoriaBusRd
U I
S — —
U M 7
S — S BusRd Memoria
BusRdX(BusUpg)
Memoria(ignorados)
Memoria U : 5
P1 P2 P3
I — M
4. PrRd U
BusRd U
BusRd Cache P3
Flush U
—S S
SS 7
7
33
Protocolo MSI: invalidación de 3 estados Protocolo MSI: invalidación de 3 estados (6)(6)
I/O
Operación Estado P1 Estado P2 Estado P3 TransacciónBus
DatosSuministrados
P1 Lee U
P3 Lee U
P3 escribe U
P1 Lee U
P2 Lee U
MemoriaBusRd
U S
S — —
U S 7
S — S BusRd Memoria
BusRdX(BusUpg)
Memoria(ignorados)
Memoria U : 7
P1 P2 P3
I — M
7
BusRd Cache P3—S S
BusRd Memoria
BusRd U
U S 7
S S S
5. PrRd U
34
Hacer ejemplo 5-2, pg. 267 de Culler
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 nivelProtocolo MSI: Decisiones de bajo nivel
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 Protocolo MESI: Invalidación de 4 estados (1)(1)
I S MBusRd BusRdX
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 Protocolo MESI: Invalidación de 4 estados (2)(2)
38
M
S
I
PrRd/-
PrWr/
(S): se activa la señal share
EPrRd (S)/BusRd
PrRd (S) /BusRd
BusRdX/-
Protocolo MESI: Invalidación de 4 estados Protocolo MESI: Invalidación de 4 estados (3)(3)
BusRd/-
BusRdX: Lectura exclusiva
! Sólo nuevas transiciones !
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 Protocolo MESI: Invalidación de 4 estados (4)(4)
I/O
Operación Estado P1 Estado P2 Estado P3 TransacciónBus
DatosSuministrados
P1 Lee U
P3 Lee U
P3 escribe U
P1 Lee U
P2 Lee U
Memoria U : 5
P1 P2 P31. PrRd U
Señal shared (S)OR-cableada
MemoriaBusRd
BusRd U
U E
E — —
5
41
Protocolo MESI: Invalidación de 4 estados Protocolo MESI: Invalidación de 4 estados (5)(5)
I/O
Operación Estado P1 Estado P2 Estado P3 TransacciónBus
DatosSuministrados
P1 Lee U
P3 Lee U
P3 escribe U
P1 Lee U
P2 Lee U
Memoria U : 5
P1 P2 P3
Señal shared (S)OR-cableada
MemoriaBusRd
U E
E — —
2. PrRd U
S U S 5
S — S
BusRd U
MemoriaBusRd
42
Protocolo MOESI: invalidación de 5 estados Protocolo MOESI: invalidación de 5 estados (1)(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 Protocolo MOESI: invalidación de 5 estados (2)(2)
Estados M - Modified (dirty) O - Owned (dirty y compartido) E - Exclusive (sin modificar ni compartir) S - Shared I - Invalid
O
M
ES
I
Propiedad
Validez
Exclusividad
44
M
S
I
Flush’: se envia el bloque a otra cache
E
Protocolo MOESI: invalidación de 5 estados Protocolo MOESI: invalidación de 5 estados (3)(3)
Nota: solo nuevas transiciones
O
BusRd/Flush’
BusRdX/Flush’
BusRd/Flush’
PrRd/ ―
PrWr/BusRdX
PrRd/BusRd
45
Hacer ejemplo de folios
Problema protocolos invalidaciónProblema 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 0 Proceso 1
¿Cuantas transacciones son necesarias en un protocolo de invalidación?
Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (1)(1)
4747
E
SM M
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ícitoNP
Dragón de Xerox PARC (1984)
Sun SparcServer (1997)
Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (2)(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
Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (3)(3)
4949
E
MSM
SCBusRd/—
BusRd/Flush
BusRd/Flush
BusRd/—
PrRdMiss (S) /BusRd
PrRdMiss (S) / BusRd
Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (4)(4)
5050
E
MSM
SCPrWr/—
PrWr/BusUpd(S)
PrWr/BusUpd(S)
PrWr/—
PrWr/BusUpd(S)
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
Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (5)(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
Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (6)(6)
5252
I/O
Operación Estado P1 Estado P2 Estado P3 TransacciónBus
DatosSuministrados
P1 Lee U
P3 Lee U
P3 escribe U
P1 Lee U
P2 Lee U
Memoria U : 5
P1 P2 P3
Señal shared (S)OR-cableada
1. PrRd U
MemoriaBusRd
BusRd U
U E 5
E — —
53
Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (7)(7)
I/O
Operación Estado P1 Estado P2 Estado P3 TransacciónBus
DatosSuministrados
P1 Lee U
P3 Lee U
P3 escribe U
P1 Lee U
P2 Lee U
Memoria U : 5
P1 P2 P3
Señal shared (S)OR-cableada
MemoriaBusRd
U E 5
E — —
BusRd Memoria
BusRd U
U SC 5
SC — SC
SC
2. PrRd U
54
Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (8)(8)
I/O
Operación Estado P1 Estado P2 Estado P3 TransacciónBus
DatosSuministrados
P1 Lee U
P3 Lee U
P3 escribe U
P1 Lee U
P2 Lee U
Memoria U : 5
P1 P2 P3
Señal shared (S)OR-cableada
MemoriaBusRd
U 5
E — —
BusRd Memoria
U SC 5
SC — SC
SC
3. PrWr U
BusUpd Cache P3
BusUpd
SC — SM
SM 77
55
Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (9)(9)
I/O
Operación Estado P1 Estado P2 Estado P3 TransacciónBus
DatosSuministrados
P1 Lee U
P3 Lee U
P3 escribe U
P1 Lee U
P2 Lee U
Memoria U : 5
P1 P2 P3
Señal shared (S)OR-cableada
MemoriaBusRd
U 7
E — —
BusRd Memoria
U SM 7
SC — SC
SC
4. PrRd U
BusUpd Cache P3SC — SM
Cache P1—SC SM —
56
Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (10)(10)
I/O
Operación Estado P1 Estado P2 Estado P3 TransacciónBus
DatosSuministrados
P1 Lee U
P3 Lee U
P3 escribe U
P1 Lee U
P2 Lee U
Memoria U : 5
P1 P2 P3
Señal shared (S)OR-cableada
MemoriaBusRd
U 7
E — —
BusRd Memoria
U SM 7
SC — SC
SC
BusUpd Cache P3SC — SM
Cache P1—SC SM —
5. PrRd U
Cache P3BusRd
BusRd U
SCSC SM
U SC 7
57
Invalidación vs Actualización Invalidación vs Actualización (1)(1)
Patrón 1for i = 1 to k
P1(write, x);
P2-PN-1 (read, x);
end for I
Patrón 2for i = 1 to k
for j = 1 to m
P1 (write, x);
end for j
P2 (read, x);
end for i
una escritura antes de lecturauna escritura antes de lectura
varias escrituras antes de lecturavarias escrituras antes de lectura
58
Invalidación vs Actualización Invalidación vs Actualización (2)(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
Invalidación vs Actualización Invalidación vs Actualización (3)(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*70 + 10*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 Invalidación vs Actualización (4)(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 escalableCoherencia 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 Multiprocesadores Escalables (1)(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 Multiprocesadores Escalables (2)(2)
Escalabilidad
$ $
Mem
Red de Interconexión
UMA, SMP
Mem
• Bus Compartido• Dance-hall
Switch
Memoria Principal
Cache Compartida
Primer Nivel $
P1 Pn
P1 Pn
Red de Interconexión Escalable
$$Mem Mem
NUMA: Memoria Distribuida
P1 Pn
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 Multiprocesadores Escalables (3)(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 Mem
NUMA: Acceso a Memoria no Uniforme
P1 Pn
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 Protocolos basados en Directorio (1)(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
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 Protocolos basados en Directorio (2)(2)
67
Centralizado Distribuido
Esquemas de Directorio
Organización del Directorio Organización del Directorio (1)(1)
Jerárquico PlanoComo Encontrar la Información de Directorio:
Basados en Mem. Basados en CacheComo Localizar las copias:
68
Organización del Directorio Organización del Directorio (2)(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 Organización del Directorio (3)(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
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 Organización del Directorio (4)(4)
71
Directorios planos basados en memoria (1)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
$
P1
• ••
Memoria
$
PN
• ••
Bit de Modificación
Memoria
72
Directorios planos basados en memoria (2)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
Directorios planos basados en memoria (3)Directorios planos basados en memoria (3)
Fallo de lectura sobre Bloque Shared
Home
Local
RdRequest
RdReply
1
2
74
Directorios planos basados en memoria (4)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
Data4
Revision
WB
4
4 HOP TRANSACTION
75
Directorios planos basados en memoria (5)Directorios planos basados en memoria (5)
Fallo de escritura sobre Bloque Shared
Local
ReaderList
2
RdXReq
1
Reader3
Invalidate
ack4
Reader
Home
76
Directorios planos basados en memoria (6)Directorios planos basados en memoria (6)
Fallo de escritura sobre Bloque Modified
Local
Owner
2
RdXReq
1 Home
3Transfer Owner
OwnerOwnerSh
ip4
4 HOP TRANSACTION
Revision4
77
Hacer ejemplo de folios
78
Directorios planos basados en memoria (7)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%
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%
79
Directorios planos basados en cache Directorios planos basados en cache (1)(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
Cache
P
Cache
Memoria Principal(Home)
Nodo cabecera Nodo 1 Nodo 2
80
Directorios planos basados en cache Directorios planos basados en cache (2)(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 Directorios planos basados en cache (3)(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
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 Directorios planos basados en cache (4)(4)
83
Escalabilidad DirectorioEscalabilidad 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
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 MemoriaSobrecarga 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
Posible mejora en protocolo basado en Posible mejora en protocolo basado en memoriamemoria
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/OwnerSh
ip
3
Revision3Data4
Revision3