Transcript tema 7
Arquitecturas Paralelas 7. Coherencia de Datos en computadores DSM - Introducción - Directorios de coherencia: MP/MC - Problemas: tráfico y atomicidad - Protocolo de coherencia Origin - Protocolo SCI (NUMA-Q) Arquitecturas Paralelas IF - EHU CD-DSM Introducción Coherencia de los datos en sistemas de memoria compartida SMP (red de comunicación, un bus) > Snoopy > Estados / estados transitorios... ¿Y en sistemas DSM (mallas...)? > La memoria es compartida, pero está físicamente distribuida entre los nodos del sistema. > La red no es un bus. Por tanto, snoopy ?? Arquitecturas Paralelas IF - EHU 7 2 CD-DSM Introducción 7 ¿Cómo se mantiene la coherencia de los datos en los sistemas DSM? ▪ El hardware no asegura la coherencia de los datos (es responsabilidad del programador): → NUMA ▪ El hardware sí asegura la coherencia de los datos: → cc-NUMA ¿Cómo? Directorios de coherencia. Arquitecturas Paralelas IF - EHU 3 CD-DSM Introducción El directorio de coherencia guarda información sobre los bloques de datos: - estado (estables o transitorios) - dónde están las copias El directorio está repartido entre los procesadores (no es un dispositivo “central”). Problemas: - tamaño del directorio. - tráfico generado para mantener la coherencia. - atomicidad de las operaciones. Arquitecturas Paralelas IF - EHU 7 4 CD-DSM Introducción 7 Lugar y estructura del directorio: - junto a la MP, una palabra de coherencia por cada bloque de datos: ▪ full bit vector ▪ limited bit vector - distribuido entre las MC (+MP), formando listas ligadas con la información de cada bloque: ▪ SCI, scalable coherent interface Arquitecturas Paralelas IF - EHU 5 7 CD-DSM Directorios de coher.: MP 6 1. Full bit vector (MESI) Estructura del directorio P0 P1 P2 P3 Es - un bit por procesador (1/0) para indicar si tiene o no copia del bloque. 1 0 0 0-0 >E 1 0 1 0-0 >S 0 0 0 1-1 >M 0 0 0 0-0 >I 1 1 0 1-1 > no - bits para indicar el estado del bloque (los habituales). Arquitecturas Paralelas IF - EHU (MESI) CD-DSM Directorios de coher.: MP Problemas El tamaño del directorio crece linealmente con el número de procesadores. - bloques de 64 bytes: P = 64 → P = 256 → P = 1.024 → Arquitecturas Paralelas IF - EHU 65 bits (8 bytes) 257 bits (32 bytes) 1.025 bits (128 bytes) +200% ! 7 7 7 CD-DSM Directorios de coher.: MP 8 Para reducir el tamaño de la palabra de coherencia: 1. Usar bloques de datos “más grandes” 2. Reducir el número de nodos (estructura jerárquica: snoopy SMP + directorio) - bloques de 128 bytes / 4 proc. por nodo: P = 1.024 (256x4) Arquitecturas Paralelas IF - EHU → 257 bits (32 bytes) +25% CD-DSM Directorios de coher.: MP 2. Limited bit vector - se limita el número de copias de un bloque: sólo se admiten k copias. - se guardan en la palabra de coherencia de cada bloque las direcciones (log2 P bits) de los procesadores que tienen una copia: @1, @2, ..., @k, estado Arquitecturas Paralelas IF - EHU k × log2 P << P 7 9 CD-DSM Directorios de coher.: MP - 4 procesadores por nodo bloques de 128 bytes / 5 copias P = 256 (64x4) → 5 x 6 + 1 = 31 bits ≈ 4 bytes + 3% P = 1.024 (256x4) → 5 x 8 + 1 = 41 bits ≈ 5 bytes + 4% Arquitecturas Paralelas IF - EHU 7 10 7 CD-DSM Directorios de coher.: MP 1 bit por proc. LD A P L C CC MP 0 ... 1 ... 0 1 1 D H 3 CC = controlador de comunic. D = directorio de coherencia L = local H = home R= remote 2 4 5 R Arquitecturas Paralelas IF - EHU estado M S 11 7 CD-DSM Directorios de coher.: MP otras dos copias ST A P L C CC MP 1 0… 0 1 …1 S …0 00 M 1 D 3’ 3 CC = controlador de comunic. D = directorio de coherencia L = local H = home R= remote IF - EHU H 2 4’ R2 4 R1 Arquitecturas Paralelas estado 12 CD-DSM Directorios de coher.: MC 7 Directorios en MC: estructura La información sobre cada bloque de datos no se concentra en una sola palabra en el directorio junto a MP, sino que reparte entre el directorio junto a MP y las caches, en los directorios de éstas. La información de coherencia de cada bloque se estructura en forma de listas ligadas. Arquitecturas Paralelas IF - EHU 13 CD-DSM Directorios de coher.: MC Información de coherencia (por bloque) “MP” → @cop1 / estado MC → @copi-1 / @copi+1 / estado Arquitecturas Paralelas IF - EHU 7 14 7 CD-DSM Directorios de coher.: MC ¿Cómo se organiza la información en colas ligadas? MP D bl. datos Pk Pj Pi Home (memoria principal) Arquitecturas Paralelas IF - EHU *,Pj bl. datos Pi (cache) Pi,Pk *,Pk bl. datos Pj (cache) Pj,* *, * bl. datos Pk (cache) 15 CD-DSM Directorios de coher.: MC 7 P = 1.024 / MP = 128 MB / MC = 512 kB / bl = 128 bytes 1. MP 5 copias, 3 bits de estado Palabra de coherencia: 5 x 10 + 3 = 53 bits Directorio (nodo): 53 bit x 1 M bloque = 53 Mb 2. MC En MP: 10 + 3 = 13 bits En caches: 2 x 10 + 3 bit = 23 bits Total (nodo): 13 x 1 M + 23 x 4 k = 13,1 Mb Arquitecturas Paralelas IF - EHU 16 CD-DSM Problemas: tráfico de coh. Mantener la coherencia debe generar el menor tráfico posible, tanto de paquetes de control como de paquetes de datos. Las operaciones de coherencia deben tener la menor latencia posible. Para ello hay que - Minimizar el número de mensajes (tráfico). - Reducir el camino crítico (latencia) de la operación. Arquitecturas Paralelas IF - EHU 7 17 CD-DSM Problemas: tráfico de coh. 7 Tres protocolos para efectuar las operaciones de coherencia: 1. Pregunta / Respuesta 2. Intervention Forwarding 3. Reply Forwarding Ejemplo: el procesador L lee una variable que no está en su cache, y que corresponde a un bloque sito en la memoria del procesador H, bloque que está modificado en la cache del procesador R. Arquitecturas Paralelas IF - EHU 18 7 CD-DSM Problemas: tráfico de coh. 1. Pregunta / Respuesta 3. Petición 0100 / M 1. Petición I L H 4b. Bloque (actual.) R M 2. Respuesta 4a. Respuesta (Bloque) Arquitecturas Paralelas IF - EHU mensajes: 5 camino crítico: 4 19 7 CD-DSM Problemas: tráfico de coh. 2. Intervention Forwarding 0100 / M 2. Petición 1. Petición I L H 4. Respuesta (Bloque) R M 3. Respuesta (Bloque) mensajes: 4 camino crítico: 4 Arquitecturas Paralelas IF - EHU 20 7 CD-DSM Problemas: tráfico de coh. 3. Reply Forwarding 0100 / M 2. Petición 1. Petición I L H 3b. Bloque (actual.) 3a. Respuesta (Bloque) Arquitecturas Paralelas IF - EHU R M mensajes: 4 camino crítico: 3 21 7 CD-DSM Problemas: atomicidad Las operaciones de coherencia tienen que realizarse de forma atómica, sin interferencias entre ellas. 2a ..1..1.. / S → ..1..0.. / M 1b. INV 1a. INV S →M R1 H 2b. Respuesta Arquitecturas Paralelas IF - EHU ? R2 S → M?? 22 CD-DSM Problemas: atomicidad Para asegurar la atomicidad + Hay que utilizar estados transitorios, busy, en las caches y en el directorio. + Si no se pueden procesar las peticiones o son incoherentes: - se rechazan mediante paquetes tipo NACK. - o se guardan en un búfer para procesarlas más tarde. Arquitecturas Paralelas IF - EHU 7 23 CD-DSM Protocolos comerciales Dos ejemplos: 1. Computadores Origin → MP 2. Protocolo SCI (Numa-Q) → MC Arquitecturas Paralelas IF - EHU 7 24 CD-DSM Origin 2000 7 25 Algunas características de los computadores Origin 2000 ▪ ▪ ▪ 512 nodos / 1.024 procesadores / hipercubo Encaminamiento adaptativo / canales virtuales Invalidación / MESI (en cache) / write-back ▪ Full bit vector / 7 estados en MP I/S/E cuidado: E = E o M (una copia única) 3 estados busy 1 para otras cosas ▪ Reply forwarding / NACK ▪ Paquetes de control: Rd / INV / RdEx / ACK / NACK / Wr Arquitecturas Paralelas IF - EHU CD-DSM Origin 2000 Hay que analizar tres operaciones para ver cómo mantener la coherencia de los datos: ▪ Lectura de una variable (fallo) ▪ Escritura de una variable (acierto / fallo) ▪ Reemplazo de un bloque (actualizar MP) Arquitecturas Paralelas IF - EHU 7 26 7 CD-DSM Origin 2000 Lectura (fallo) Dir. = I/S 2a 1b. Rd A 3 1a I → busy → E/S L 0000 / I → 0001 / E H 2b. Bloque Arquitecturas Paralelas IF - EHU 1100 / S → 1101 / S 27 7 CD-DSM Origin 2000 Lectura (fallo) Dir. = E 2a 4 1000 / E → 1001 / busy → 1001 / S 1b. Rd A 4 1a I → busy → S L 2b. Bloque (espec.) 2c. Rd A (+@L) H 3c. ACK / Wr (Bl.) 3b. ACK / Bloque Arquitecturas Paralelas IF - EHU R 3a E/M → S 28 7 CD-DSM Origin 2000 Lectura (fallo) Dir. = busy 1b. Rd A 1a I → busy L H 2. NACK Arquitecturas Paralelas IF - EHU xxxx / busy 29 7 CD-DSM Origin 2000 Escritura (acierto-INV / fallo-RdEx) Dir.: busy 1b. INV A / RdEx A 1a S/I → busy L H 2. NACK Arquitecturas Paralelas IF - EHU xxxx / busy 30 7 CD-DSM Origin 2000 Escritura (acierto-INV / fallo-RdEx) Dir.: S 1b. INV A / RdEx A 2a 1101 / S → 0001 / E 1100 / S eficiencia ¡cuidado carreras! 2d. INV A (+@L) 2c. INV A 5 1a S/I → busy → M L H (+@L) R1 2b. n.cop. / +Bloque 3b. ACK Arquitecturas Paralelas IF - EHU 3a S→I R2 4a S→I 4b. ACK 31 7 CD-DSM Origin 2000 Escritura (acierto-INV / fallo-RdEx) ¡Ojo! carreras Dir.: S 1b. INV A / RdEx A 1a S/I → busy L Rd A (@R3) ? → 0011 / busy 2a 1101 / S → 0001 / E 1100 / S 2d. INV A (+@L) 2c. INV A H (+@L) 2b. n.cop. / +Bloque R3 IF - EHU R2 NACK eficiencia: guardar, no rechazar Arquitecturas Paralelas R1 R4 32 7 CD-DSM Origin 2000 Escritura (fallo-RdEx) Dir.: E 2a 4 1000 / E → 0001 / busy → 0001 / E 2c. RdEx A (+@L) 1b. RdEx A 4 1a I → busy → M L 2b. n.cop. + Bloque (espec.) H 3c. ACK / Wr (Bloque) 3b. ACK / Bloque Arquitecturas Paralelas IF - EHU R 3a E/M → I 33 7 CD-DSM Origin 2000 Escritura (acierto-INV) Dir.: E 1b. INV A 1a S → busy L H 2. NACK Arquitecturas Paralelas IF - EHU 1000 / E 34 7 CD-DSM Origin 2000 Escritura (fallo-RdEx) Dir.: I 1b. RdEx A 3 1a I → busy → M L 2a H 2b. Bloque Arquitecturas Paralelas IF - EHU 0000 / I → 0001 / E 35 7 CD-DSM Origin 2000 Escritura (acierto-INV) Dir.: I 1b. INV A 1a S → busy L H 2. NACK Arquitecturas Paralelas IF - EHU 0000 / I 36 7 CD-DSM Origin 2000 Reemplazo – actualizar MP Dir.: E 1b. Wr (Bloque) 3 1a M → busy → x L 2a H 2b. ACK Arquitecturas Paralelas IF - EHU 0001 / E → 0000 / I 37 7 CD-DSM Origin 2000 Reemplazo – actualizar MP Dir.: busy 2a 3a 0001 / E → 1001 / busy → 1000 / E 1b. Rd A 2c. Rd A 4 2 M → busy → x L 2d. Wr (Bloque) 3c. ACK Arquitecturas Paralelas IF - EHU H 2b. Bloque (espec) 3b. Bloque R 4 1a I → busy → E 38 7 CD-DSM Numa-Q Estructura del multiprocesador NUMA-Q 4P 4P 4P 4P 4P 4P 4P Arquitecturas Paralelas IF - EHU P C 4P P C P C IQ link M D P C PCI S/I S/I 39 7 CD-DSM Numa-Q Estructura del multiprocesador NUMA-Q ▪ ▪ 8 x 4 procesadores / bus (snoopy) ▪ ▪ ▪ Invalidación / MOESI / write-back IQ-link remote access cache <Petición / Respuesta> / encolado de peticiones Listas doblemente ligadas en las caches: directorio (MP): directorio MC: estado / @c1 estado / @ci-1 / @ci+1 ▪ SCI scalable coherent interface Arquitecturas Paralelas IF - EHU 40 CD-DSM Protocolo de coh. SCI 7 Estados de los bloques: ▪ En “MP”: Home (I), Fresh (E, S), Gone (M, O) ▪ En MC: - posición: Only, Head, Mid, Tail - estado: Dirty (M), Fresh (S), Valid (S’), Exclusive (E) Ej.: Only-Fresh, Head-Fresh, Head-Dirty, Mid-Valid... - y estados busy Arquitecturas Paralelas IF - EHU 41 CD-DSM Protocolo de coh. SCI Tres funciones para mantener la coherencia de los datos: ▪ List Construction Para cargar un bloque de datos en la cache (Rd) y ponerlo en cabeza de la lista de copias. ▪ Roll-out Para eliminar un bloque de la cache (reemplazo), y quitarlo de la lista de copias. ▪ Purge Para modificar una variable (Wr), y, por tanto, invalidar el resto de copias y actualizar la lista. Arquitecturas Paralelas IF - EHU 7 42 7 CD-DSM Protocolo de coh. SCI Lectura: List Construction (Home) 1b. LC (Rd A) Dir (MC) L Dir (MP) H I → busy → O-F|*-* 1a 3 Arquitecturas Paralelas IF - EHU 2b. Bloque H | * → F | @L 2a 43 7 CD-DSM Protocolo de coh. SCI Lectura: List Construction (Fresh/Gone) Dir (MC) I → busy → H-F | *-@R 1a 5 3. New Head (@L) L R 4b. ACK Dir (MC) O-F | *-* Dir (MP) H F | @R → F | @L 2a 2b. Bloque + @R → T-V | @L-* H-F | *-@R2 → M-V | @L-@R2 4a Arquitecturas Paralelas IF - EHU 1b. LC (Rd A) ¿qué cambiaría si estuviera en Gone? 44 CD-DSM Protocolo de coh. SCI Escrituras: ¡sólo en la copia de la cabecera! acierto / head → Purge fallo → List Construction + Purge acierto / no head → Roll-Out + L. Const. + Purge Arquitecturas Paralelas IF - EHU 7 45 7 CD-DSM Protocolo de coh. SCI Purge (Only-Fresh) 1b. Wr (est. A) L Dir (MC) Dir (MP) H O-F | *-* → busy → O-D | *-* 1a Arquitecturas Paralelas IF - EHU 3 2b. ACK F | @L → G | @L 2a 46 7 CD-DSM Protocolo de coh. SCI 47 Purge (Head-Fresh) Dir (MP) F | @L → G | @L 2a 3. INV A 1b. Wr (est. A) H L 2b. ACK 1a R1 R2 6b. ACK + * 4b. ACK + @R2 Dir (MC) H-F | *-@R1 → 5. INV A busy → O-D | *-* 7 T-V |@R1-* → I | *-* Dir (MC) M-V |@L-@R2 → I | *-* 4a Arquitecturas Paralelas IF - EHU 6a 7 CD-DSM Protocolo de coh. SCI Roll-Out (Wr / reempl.) Dir (MC) M-V | @R1-@R2 → busy 1a → busy / I | *-* 4 1b. RO A + @R2 1c. RO A + @R1 R1 2b. ACK Dir (MC) H-D | *-@L → H-D | *-@R2 2a Arquitecturas Paralelas IF - EHU L R2 3b. ACK Dir (MC) T-V | @L-* → T-V | @R1-* 3a 48 7 CD-DSM Protocolo de coh. SCI Problemas: atomicidad (i) H-Dbusy | *-@L1 M-V|@L2-@R1 busy H-D | *-@R1 L1 Ack + bl R1 Ack + bl H Arquitecturas Paralelas IF - EHU T-V | @R1-* NewHead NewHead L2 H-D|*-@R2 M-V|@L1-@R2 Dir (MP) (MP) G | @L1 @R1 G | @L2 R2 49 CD-DSM Protocolo de coh. SCI Problemas: atomicidad (ii) busy O-F | *-* busy NACK L R LC Wr H ?? Arquitecturas Paralelas IF - EHU Dir (MP) F | @R @L 7 50 CD - DSM | Protocolo de coh. SCI Problemas: atomicidad (ii) busy O-F | *-* busy L R any questions? NACK LC Wr H Dir (MP) ?? Arquitecuras Paralelas IF - EHU F | @R