Professional Documents
Culture Documents
Bibliografa
Alternativas de implementacin
(1)
Escalabilidad P1
Switch
Pn P1
$
Primer Nivel $ Memoria Principal Cache Compartida -Entrelazadas (2-8) (e.g. Alliant FX-8, Encore& Sequent)
Pn
$
Red de Interconexin
Mem Mem
P1
Mem $ Mem
Pn
$
Alternativas de implementacin
(2)
P1
$
Pn
Bus E/S
$
Problemas
Memoria
Servidores
Estaciones de trabajo
Bloques de construccin bsicos sistemas de gran escala Soporte en microprocesadores de propsito general
Modelo de programacin
Todos los Pc pueden direccionar cualquier posicin de memoria Las comunicaciones son implcitas por LOAD y STORE. Los procesos comparten parte de su espacio virtual. Cada nodo Pc+Memoria+ I/O Cada Pc solo accede a su memoria privada Comunicaciones va mensajes explcitos ( SEND- RECIEVE ). Soporte operaciones de E/S Las comunicaciones deben aparecer explcitas en el programa
Paso de mensajes
Receive Y , P, t
Addr ess Y
Pr ocess P
Pr ocess Q
CPU
CPU
CPU
Jerarqua de Memoria
Ocultar la latencia de los accesos Incrementar el Ancho de Banda
Variables Compartidas
Load U
1
P 2 5
Load U U=?
3 3
U=? $
4
U: 5 U: 7
Store U
U: 5
Load U
U: 5
1
Load U
Dispositivos I/O
Memoria Protocolos de coherencia de cache Siguen la pista del estado de cualquier bloque de datos compartido para evitar incoherencias
(1)
Salida de dato obsoleto (cache post-escritura) Entrada de dato que no tenga efecto (acierto de cache)
L2 MMu
DL1
Memoria
DMA
Controlador I/O
8
(2)
Soluciones uniprocesador
Segmentos de memoria involucrados en E/S se marcan como NoCacheables Pginas de memoria involucradas se vuelcan previamente a memoria (flush) Trfico de E/S pasa por todos los niveles de la jerarqua de memoria.
(3)
En multiprocesadores
Deshabilitar la cache para datos compartidos Invocar al SO en cada referencia a una variable compartida
Solucin:
Proveer coherencia de memoria
10
(1)
Una operacin de lectura retorna siempre el ltimo valor que fue escrito en la posicin de memoria correspondiente, independientemente del procesador que efecta la lectura o la escritura
11
(2)
Es posible construir una ordenacin secuencial consistente con los resultados de la ejecucin, 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
Orden hipottico
12
(3)
Todas las escrituras a una posicin de memoria deben verse en el mismo orden por todos los procesadores
13
(1)
Invalidacin en Escritura
Actualizacin en Escritura
14
(2)
Escrituras consecutivas a un bloque (no palabra) desde el mismo procesador se realizan localmente
Fallo de Lectura
Post-Escritura (write-back):
bsqueda en caches remotas (snoop) para encontrar el ultimo valor
15
(3)
Actualizacin en Escritura
16
(4)
Tipo de protocolo
Broadcast eficiente
Las operaciones de invalidacin o actualizacin se pueden enviar de forma simultnea a todos los controladores.
En otro caso
La actualizacin se enva nicamente a aquellas caches que tienen una copia del bloque.
Procolos Snoopy
(1)
Espionaje el bus
State Tag
Datos
CPU
Ld/St
Bus
Transacciones Relevantes
18
Procolos Snoopy
(2)
Recibir peticiones del procesador, examinar el estado de la cache, y emitir una peticin al bus Espiar las peticiones que aparecen en el bus, y reaccionar a aquellas que afecten a la cache que controla
Realmente, la comprobacin del controlador es la misma comparacin (tag-match) que se hace cuando llega peticin 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
19
Procolos Snoopy
(3)
Uniprocesador:
Protocolo de la cache: Algoritmo formado por mquinas de estado que cooperan. Define:
Conjunto de estados (Cada bloque de memoria tiene un estado asociado) Diagrama de transicin de estados Acciones asociadas a cada transicin
S1
Acciones asociadas
S2
Procolos Snoopy
(4)
Multiprocesador:
Protocolo Snoopy (basado en espionaje del bus): Algoritmo formado por mquinas de estado que cooperan. Define:
Conjunto de estados (Cada bloque de memoria tiene un estado asociado a cada procesador) Diagrama de transicin de estados Acciones asociadas a cada transicin
S1
Acciones asociadas
p1 p2
21
pN
S2
(1)
Poltica de Invalidacin
Lectura / -Escritura / Memoria
V
Fallo Lectura / Memoria
I
Escritura / Memoria
22
(2)
Poltica de Invalidacin
PrRd / -PrWr / BUS_Wr
V
Pr_Rd / BUS_Rd BUS_Wr /--
I
PrWr / BUS_Wr
Ejemplo de folios
23
(3)
Supongamos: 1 nivel cache, Write-through, Non-allocate. Es coherente este Protocolo Snoopy de 2 estados? Asunciones:
Los controladores de cada cache espan el bus Propagacin 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 atmicas: Slo una operacin activa al mismo tiempo en el bus. Serializacin de escrituras
1.
24
2.
Operaciones tratadas en el orden en que son emitidas Valor devuelto por ltima lectura es el ltimo escrito
(4)
25
(5)
300 Millones de stores por segundo por procesador 2400 MB/s por procesador Un bus con un ancho de banda de 10GB/s slo puede soportar 4 procesadores sin saturarse
26
(1)
Tres estados:
Lecturas (BusRd):
Fallo lectura o escritura (asignacin en escritura)
PostEscrituras (BusWB):
Reemplazamiento
27
(2)
PrRd/BusRd
Replace/
Replace/BusWB
PrRd/
28
(1)
Transacciones de bus
29
BusRd Lectura sin intencin de modificar el dato. La genera el controlador cuando recibe un PrRd y no tiene dato en cache. BusRdX Traer dato con intencin 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.
(3)
Valido: Shared Modificado: Exclusivo Nueva transaccin: BusRdx (Lectura con Invalidacin)
PrWr/ PrRd/
M
PrWr/ BusRdX
Slo hay 1 cache con copia vlida (la copia de la memoria principal est anticuada) La exclusividad implica que la cache puede modificar el bloque sin notificrselo a PrRd/BusRd nadie
BusRd/ Flush
Replace / Flush
BusRdX / Flush BusRdX/-
S
PrRd / BusRd/
PrWr/BusRdX
El bloque est presente en la cache y no ha sido modificado La memoria est actualizada Otras caches adicionales pueden tener copia
30
(4)
3. PrWr U
7
S I
U S M
BusRdX U
I/O
Memoria
U: 5
Estado P1 S S
Estado P2
Estado P3 S
Transaccin Datos Bus Suministrados Memoria BusRd BusRd Memoria Memoria (ignorados)
BusRdX (BusUpg)
(5)
S I
S U M
BusRd U Memoria
Flush U
I/O
U: 5 7
Estado P1 S S I S
Estado P2
Estado P3 S M S
Transaccin Datos Bus Suministrados Memoria BusRd BusRd Memoria Memoria (ignorados) Cache P3
BusRdX (BusUpg)
BusRd
(6)
5. PrRd U
U S
P3
U S
BusRd U
I/O
Memoria
U: 7
Estado P1 S S I S S
Estado P2 S
Estado P3 S M S S
Transaccin Datos Bus Suministrados Memoria BusRd BusRd Memoria Memoria (ignorados) Cache P3 Memoria
BusRdX (BusUpg)
BusRd BusRd
34
Qu transicin hacer cuando se recibe BusRd de un bloque en estado modificado? La eleccin depende de las expectativas (patrn de acceso siguiente)
M
BusRd/ Envio
Patrn 1: el procesador original vuelve a realizar una lectura del bloque Patrn 2: el procesador nuevo realiza una escritura del bloque Patrn 1: acierto de lectura Patrn 2: invalidacin (latencia de escritura) Patrn 1: fallo de lectura Patrn 2: no es necesaria invalidacin
Shared
BusRd / Envio
Invlido
(1)
2 transacciones de bus:
BusRd: Trae el bloque a estado Shared BusRdX: Pasa de S a M, e invalida el resto de copias.
I
BusRd
S
BusRdX
36
(2)
Protocolo MESI
4 Estados :
(M) Modificado, (E) Exclusivo, (S) Compartido e (I) Invlido Implica Exclusividad: puede pasarse a (M) sin transaccin de bus No implica Pertenencia: el controlador de cache no debe responder a transaccin BusRd, pues memoria actualizada.
Pentium Power PC 601 MIPS R4400 (procesador usado en los multiprocesadores de Silicon Graphics)
37
(3)
M
PrWr/
E
PrRd/BusRdX/-
BusRd/-
I
38
Ejemplo de folios
39
(4)
BusRd U Memoria
I/O
U: 5
Estado P1 E
Estado P2
Estado P3
(5)
2. PrRd U
S E
U S
BusRd U Memoria
I/O
U: 5
Estado P1 E S
Estado P2
Estado P3 S
(1)
Problema MESI/MSI
Transaccin Flush
Adems de transferir el bloque a la cache que lo solicita, se actualiza el contenido de la memoria Podra evitarse esta actualizacin
No es Exclusivo, existen otras copias Es Propietario, suministra los datos en caso de:
BusRd B BusRdX B
42
(2)
Estados
M - Modified (dirty) O - Owned (dirty y compartido) E - Exclusive (sin modificar ni compartir) S - Shared I - Invalid
O
S M
E
I
43
(3)
M
PrWr/ BusRdX
BusRd/ Flush
O
BusRd/Flush PrRd/
E
PrRd/ BusRd
BusRdX/ Flush
I
44
45
Cuando hay un patrn de acceso migratorio, los protocolos basados en invalidacin son ineficientes.
SC
Yo y otrosYo pero no la memoria, soy el propietario y la memoria Yo, otros y puede Yo y nadie ms que la memoria, pero Potencialmente 2 noms procesadores no soy el propietario El bloque ha sido modificado ytienen slo este Solo Memoria bloque. memoria principal no est actualizada y NP El bloque ha sido La modificado, lacon copia hay una cache Potencialmente 2 actualizada o procesador ms procesadores este es responsable de actualizar la memoria no est y esta es Estado Implcito tienen este bloque. La memoria principal memoria Exclusiva) principal cuando este bloque sea la nica copia (Propiedad puede estar o no actualizada reemplazado
SM
SM: Shared Modified
Dragn de Xerox PARC (1984) Sun SparcServer (1997)
47
Eventos Procesador
Broadcast de la palabra modifica a todos los procesadores para que se actualicen las copias
Seal S
48
E
PrRdMiss (S) / BusRd BusRd/
SC
PrRdMiss (S) / BusRd
BusRd/Flush
SM
49
BusRd/Flush
SC
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
SM
PrWr/BusUpd(S)
PrWrMiss/ BusRd(S);BusUpd
PrWr/ PrWr/BusUpd(S)
50
Debe hacerse un broadcast al resto de las controladores para informar de dicho reemplazo (Transaccin Reemplazo)?
En caso de que haya slo otra copia, permite que pase al estado E o M (no genera actualizaciones) Transaccin Reemplazo puede ser menos crtica que BusUpd
Estado SM
Puede eliminarse?
DEC Firefly: La transaccin BusUpd tambin actualiza la memoria El Protocolo Dragn asume que la actualizacin de SRAM caches es menos costosa que la actualizacin de memoria.
51
BusRd U
Memoria
U: 5
I/O
Estado P1
Estado P2
Estado P3
E U SC
U SC
BusRd U
Memoria
U: 5
I/O
Estado P1 E SC
Estado P2
Estado P3 SC
U SC
7 5
U SM SC
5 7
BusUpd
Memoria
U: 5
I/O
Estado P1 E SC SC
Estado P2
Estado P3 SC SM
Transaccin Datos Bus Suministrados BusRd BusRd BusUpd Memoria Memoria Cache P3
U SC
U SM
Memoria
U: 5
I/O
Estado P1 E SC SC SC
Estado P2
Estado P3 SC SM SM
Transaccin Datos Bus Suministrados BusRd BusRd BusUpd Memoria Memoria Cache P3 Cache P1
U SC
U SC
U SM
BusRd U
Memoria
U: 5
I/O
Estado P1 E SC SC SC SC
Estado P2 SC
Estado P3 SC SM SM SM
Transaccin Datos Bus Suministrados BusRd BusRd BusUpd BusRd Memoria Memoria Cache P3 Cache P1 Cache P3
Invalidacin vs Actualizacin
(1)
Patrn 1
for i = 1 to k P1(write, x); P2-PN-1 (read, x); end for I
Patrn 2
for i = 1 to k for j = 1 to m P1 (write, x); end for j P2 (read, x); end for i
57
Invalidacin vs Actualizacin
(2)
Patrn 1
Iteracin 1: N fallos de cache (70 bytes) Iteraciones restantes: 1 actualizacin/iteracin (14 bytes; 6 cntrl, 8 datos) Trfico total = 16*70 + 9*14 = 1246 bytes Iteracin 1: N fallos de cache (70 bytes) Iteraciones restantes: P1 invalida (6bytes, BusUpgrd), los otros producen fallos de lectura (70bytes) Trfico total = 16*70 + 9*6 + 15*9*17 = 10,624 bytes
Invalidacin
58
Invalidacin vs Actualizacin
(3)
Patrn 2
Iteracin 1: 2 fallos de cache (70 bytes), M actualizaciones (14 bytes; 6 cntrl, 8 datos) Iteraciones restantes: M actualizacin/iteracin Trfico total = 2*70 + 10*14 = 1540 bytes Iteracin 1: 2 fallos de cache (70 bytes) Iteraciones restantes: P1 invalida (6bytes, BusUpgrd), P2 produce fallo de lectura (70bytes) Trfico total = 2*70 + 9*(70+6) = 824 bytes
Invalidacin
59
Invalidacin vs Actualizacin
(4)
Los protocolos de actualizacin pueden generar demasiado trfico Es posible reducir/limitar actualizaciones (Competitive Snooping)
Actualmente
Protocolos de actualizacin son difciles de implementar correctamente ( problema consistencia) Se utilizan raramente Puede suceder lo mismo que ahora Los multiprocesadores en un chip pueden hacerlos ms atractivos
En un futuro
60
Esquema
Multiprocesadores escalables Coherencia cache Protocolos basados en Directorio Organizacin del Directorio
61
Escalabilidad
62
P1
Switch
Pn P1
$
Primer Nivel $
Memoria Principal Cache Compartida
Pn
$
Red de Interconexin
Mem Mem
P1
Mem $ Mem
Pn
$
UMA, SMP
P1
Mem $ Mem
Pn
$
Fallos:
Saber estado bloque en otras caches Si necesario, localizar copias (invalidarlas) Comunicarse con las otras copias: obtener datos, invalidarlas/actualizarlas
Mantener coherencia mediante hw con granularidad de bloque cache al igual que en las mquinas basadas en bus Aproximaciones ms utilizadas:
64
Rendimiento
(multiplicado por la frecuencia de fallos) Latencia: Transacciones red en camino crtico del fallo (espera)
Sobrecarga de memoria
66
Esquemas de Directorio
Distribuido
Plano
Jerrquico
Basados en Mem.
Basados en Cache
67
Esquema Jerrquico
Nodos de procesamiento
Directorio (level-1)
Directorio (level-2)
68
Problemas
Transacciones ms numerosas que en directorios planos Requisitos de latencia y ancho de banda mucho mayores
69
P1
$
Memoria Memoria
PN
$ M
Bits de Presencia
Directorio:
71
Estado del bloque en la cache: Cualquiera de los anteriores: MSI, MESI, MOESI, etc.
Supongamos:
Estados en cache MSI, 1 nivel de cache, 1 procesador por nodo Comprobar a que memoria hay que acceder. Si local, acceder directamente. Si remota, establecer comunicacin con ella. 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 comunicacin con el nodo. En el nodo se pasa el estado a Shared, y se enva el dato.
2.
3.
72
4.
Home
RdRequest
2
RdReply
Local
73
Home
2
RdReq Owner
4 Revision
Local
WB
Owner
74
Home
2
RdXReq ReaderList
3
Reader
Invalidate
4
Local
ack
Reader
75
Home
2
RdXReq Owner
4 Revision
3 Transfer Owner
Local
4 OwnerShip
Owner
76
77
Mensajes (BW): proporcional nodos que comparten el bloque Mensajes en camino crtico (Latencia): Todos disponibles en nodo origen Envo en paralelo VENTAJA
64 nodos: sobrecarga del directorio 12.5% 256 nodos: sobrecarga del directorio 50% 1024 nodos: sobrecarga del directorio 200%
78
Nodo cabecera
P P
Nodo 1 P
Nodo 2
Cache
79
Cache
Cache
Fallo de lectura:
Nodo enva peticin al nodo origen de ese bloque para determinar la identidad del nodo cabecera Nodo origen responde con la identidad del nodo cabecera Nodo enva solicitud insercin 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)
80
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.
Nmero de mensajes (BW): proporcional al nmero de nodos que comparten el bloque (semejante a los basados en memoria), pero estn distribuidos Nmero de mensajes en el camino crtico (Latencia): tambin es proporcional al nmero de nodos que comparten el bloque (los mensajes se serializan). Esto es peor que en los de memoria !!
81
Directorios planos basados en cache (4) Ventajas con esquemas basados en memoria
Menor sobrecarga de directorio.
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
82
Escalabilidad Directorio
Reducir la demanda de BW Reducir el nmero de transacciones generadas por cada operacin de memoria. Reducir la latencia de cada operacin Reducir el nmero de operaciones del camino crtico. Reducir la ocupacin del directorio Tipo de organizacin.
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 tamao del directorio es proporcional al nmero de bloques de memoria. Protocolos basados en cache El tamao del directorio es proporcional al nmero de bloques de cache.
Por ejemplo:
83
Incrementar el tamao de bloque Utilizar nodos multiprocesador (solo 1 bit por nodo)
Punteros a los nodos que comparten dicho bloque Ejemplo con 1024 nodos y 100 punteros de 10 bits
entradas del directorio) Slo una fraccin muy pequea de los bloques de la memoria estarn replicados en las caches en un momento dado Organizar el directorio como una cache
84
Reduccin del nmero de mensajes (de 5 a 4) Reduccin de mensajes en camino crtico (de 4 a 3).
3 HOP TRANSACTION
RdReq /RdXReq
4
Home
3 2 Revision Intervention (ID local)
Data
Local
3
85
Data/ OwnerShip
Owner