7. Datuen Koherentzia DSM Konputagailuetan Arkitektura Paraleloak IF - EHU 7. Datuen Koherentzia DSM Konputagailuetan - Sarrera - Koherentzia-direktorioak: MN / CM - Arazoak: trafikoa eta atomikotasuna - Origin konputagailuen protokoloa - SCI protokoloa (NUMA-Q)
Eta DSM sistemetan (mailak...)? Sarrera Datuen koherentzia memoria partekatuko SMP sistemetan (komunikazio-sarea, busa): > Zelataria > Egoerak / egoera iragankorrak... Eta DSM sistemetan (mailak...)? > Memoria partekatua da, baina fisikoki banatuta dago sistemako nodoen artean. > Sarea ez da bus bat. Beraz, zelataria?
Nola eutsi datuen koherentziari DSM sistemetan? Sarrera Nola eutsi datuen koherentziari DSM sistemetan? ▪ hardwareak ez du datuen koherentzia ziurtatzen (programatzailearen ardura da datuen koherentzia ziurtatzea) → NUMA ▪ hardwareak ziurtatzen du datuen koherentzia: → cc-NUMA Nola? Koherentzia-direktorioak.
Sarrera Koherentzia-direktorioak datu-blokeei buruzko informa-zioa gordetzen du: - egoera (egonkorra, iragankorra) - kopiak non dauden Koherentzia-direktorioa sistemako prozesadoreen artean banatzen da; ez da (ezin da!) gailu “zentralizatu” bat. Arazoak: - direktorioaren tamaina. - koherentzia mantentzeko sortzen den trafikoa. - koherentzia-eragiketen atomikotasuna.
Koherentzia-direktorioaren kokapena eta egitura: Sarrera Koherentzia-direktorioaren kokapena eta egitura: - MNaren ondoan, koherentzia-hitz bat datu-bloke bakoitzeko: ▪ Full bit vector ▪ Limited bit vector - CMetan banatuta (+MN), blokeei buruzko informazioarekin “zerrenda estekatuak” osatuz: ▪ SCI, scalable coherent interface
Koher.-direktorioak (MN) Koherentzia-direktorioa MNaren ondoan: 1. Full bit vector (MESI) Direktorioaren egitura: - bit bat prozesadoreko (1/0), datu-blokearen kopia duen edo ez adierazteko. - hainbat bit blokearen egoera adierazteko (ohiko egoerak). P0 P1 P2 P3 Eg 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 > ez (MESI)
Koher.-direktorioak (MN) Arazoak Direktorioaren tamaina, linealki hazten baita prozesadore kopuruaren arabera. - 64 byteko blokeak: P = 64 → 65 bit (8 byte) P = 256 → 257 bit (32 byte) P = 1.024 → 1.025 bit (128 byte) + % 200!
Koher.-direktorioak (MN) Koherentzia-hitzaren tamaina murrizteko aukerak: 1. Datu-bloke “handiagoak” erabiltzea 2. Nodo kopurua txikiagoa izatea (egitura hierarkikoa, SMP zelatariak + direktorioa) - 128 byteko blokeak / 4 prozesadoreko nodoak: P = 1.024 (256x4) → 257 bit (32 byte) + %25
Koher.-direktorioak (MN) 2. Limited bit vector - datu-blokeen kopia kopurua cacheetan mugatu egiten da: k kopia bakarrik. - koherentzia-hitzean, blokearen kopia duten prozesa-doreen helbideak (log P bit) gordetzen dira. @1, @2, ..., @k, egoera k × log2 P << P
Koher.-direktorioak (MN) - 4 prozesadoreko nodoak / 128 byteko datu-blokeak / gehienez 5 kopia P = 256 (64x4) → 5 x 6 + 1 = 31 bit ≈ 4 byte + % 3 P = 1.024 (256x4) → 5 x 8 + 1 = 41 bit ≈ 5 byte + % 4
LD A Koher.-direktorioak (MN) L H R 1 3 2 4 5 1 bit prozesadoreko egoera 0 ... 1 ... 0 M L KK = komunikazioen kontrolagailua D = koherentzia-direktorioa L = local H = home R= remote H P C KK D MN R 1 S 1 2 3 4 5
ST A Koher.-direktorioak (MN) L H R2 R1 1 3’ 3 2 4’ 4 beste bi kopia egoera L KK = komunikazioen kontrolagailua D = koherentzia-direktorioa L = local H = home R= remote H P C KK D MN 0 …0 0 M 1 4 4’ 2 3 3’ R2 R1
Koher.-direktorioak (CM) Koherentzia-direktorioak CMetan: egitura Datu-bloke baten egoerari buruzko informazioa ez da hitz bakar batean, direktorioan, zentralizatzen. Koherentzia-informazioa MNaren ondoan zein cacheetan banatzen da (cacheen direktorioetan). Esteka bikoitzeko zerrenda bat osatzen da datu-bloke bakoitzeko koherentzia-informazioarekin.
Koher.-direktorioak (CM) Koherentzia-informazioa (datu-bloke bakoitzeko) @kop1 / egoera “MN” → @kopi-1 / @kopi+1 / egoera CM →
Koher.-direktorioak (CM) Nola eratzen da bloke baten kopia-zerrenda estekatua? Pi,Pk *,Pk MN D datu-bl. Pk *, * datu-bl. *,Pj datu-bl. Pj,* Pi Pj datu-bl. Pi (cachea) Pj (cachea) Pk (cachea) Home (memoria nagusia)
Koher.-direktorioak (CM) P = 1.024 / MN = 128 MB / CM = 512 kB / bl = 128 byte 1. MN 5 kopia, 3 biteko egoerak Koherentzia-hitza: 5 x 10 + 3 = 53 bit Direktorioa nodoetan: 53 bit x 1 M bloke = 53 Mb 2. CM “MN”an: 10 + 3 = 13 bit Cacheetan: 2 x 10 + 3 bit = 23 bit Nodoan: 13 x 1 M + 23 x 4 k = 13,1 Mb
Arazoak: koher.-trafikoa Koherentzia mantentzeak ahalik eta trafiko gutxien sortu behar du (kontrol-paketeak eta datu-paketeak). Gainera, koherentzia mantentzeko eragiketen latentziak txikia behar du izan. Beraz: - Pakete kopurua (trafikoa) murriztu behar da. - Eragiketaren bide kritikoa (latentzia) txikiagotu behar da.
Arazoak: koher.-trafikoa Hiru protokolo koherentzia-eragiketen “elkarriz-ketak” betetzeko: 1. Eskaera / Erantzuna 2. Intervention Forwarding 3. Reply Forwarding Adibidea: L prozesadoreak irakurri egin behar du cachean ez duen hitz bat, H prozesadorearen memoriako bloke batekoa, zeina R nodoan aldatuta dagoen.
Arazoak: koher.-trafikoa 1. Eskaera / Erantzuna 3. Eskaera 0100 / M 1. Eskaera L H R I 4b. Blokea (eguner.) M 4a. Erantzuna (Blokea) 2. Erantzuna mezuak: 5 bide kritikoa: 4
Arazoak: koher.-trafikoa 2. Intervention Forwarding 0100 / M 1. Eskaera 2. Eskaera L H R M I 4. Erantzuna (Blokea) 3. Erantzuna (Blokea) mezuak: 4 bide kritikoa: 4
Arazoak: koher.-trafikoa 3. Reply Forwarding 0100 / M 1. Eskaera 2. Eskaera L H R 3b. Blokea (eguner.) M I 3a. Erantzuna (Blokea) mezuak: 4 bide kritikoa: 3
Arazoak: atomikotasun eza Koherentzia-eragiketek atomikoak izan behar dute, “interferentziarik” gabe bete ahal izateko. 2a → ..1..0.. / M ? R1 H S R2 ..1..1.. / S 1a. INV 1b. INV →M 2b. Erantzuna → M??
Arazoak: atomikotasun eza Atomikotasuna ziurtatzeko: + Egoera iragankorrak, busy, erabili behar dira, direktorioan zein cacheetan. + Eskaerak prozesatu ezin badira edo inkoherenteak badira: - errefusatu egiten dira, NACK paketeen bidez. - gorde egiten dira “buffer” batean, geroago prozesatzeko.
Bi adibide: Koh.-protokolo komertzialak 1. Origin konputagailuak → MN 2. SCI protokoloa (Numa-Q) → CM
Origin 2000 multikonputagailuen zenbait ezaugarri: ▪ 512 nodo / 1.024 prozesadore / hiperkuboa ▪ Bideratze moldakorra / kanal birtualak ▪ Baliogabetu / MESI / write-back ▪ Full bit vector / 7 egoera I / S / E adi: E = E edo M (kopia bakarra) 3 busy egoera (desberdinak) beste egoera bat (gauza berezietarako) ▪ Reply forwarding / NACK ▪ Kontrol-paketeak: Rd / INV / RdEx / ACK / NACK
Origin 2000 Hiru eragiketa analizatu behar ditugu, datuen koherentzia nola ziurtatzen den aztertzeko: ▪ Aldagai baten irakurketa (huts egin) ▪ Aldagai baten idazketa (asmatu / huts egin) ▪ Datu-bloke baten ordezkapena (MNa eguneratu)
Origin 2000 Irakurketa (huts) L H Dir. = I/S 1b. Rd A 2a → 0001 / E → busy → E/S 3 1100 / S → 1101 / S 2b. Blokea I
Origin 2000 Irakurketa (huts) L H R Dir. = E 2a → 1001 / busy 4 1000 / E 1b. Rd A 2c. Rd A (+@L) L H R 1a → busy → S 4 3a → S 3b. ACK / Blokea 2b. Blokea (espek.) 3c. ACK / Wr (Bl.) I E/M
Origin 2000 Irakurketa (huts) L H Dir. = busy 1b. Rd A xxxx / busy 1a 2. NACK I
Idazketa (asm-INV / huts-RdEx) Origin 2000 Idazketa (asm-INV / huts-RdEx) Dir. = busy 1b. INV A / RdEx A L xxxx / busy H 1a → busy 2. NACK S/I
Idazketa (asm-INV / huts-RdEx) Origin 2000 Idazketa (asm-INV / huts-RdEx) Dir. = S eraginkortasuna kontuz lasterketak! 2a → 0001 / E 1101 / S 1100 / S 2d. INV A (+@L) 1b. INV A / RdEx A 2c. INV A (+@L) L H R1 R2 1a → busy → M 5 4b. ACK 3b. ACK 3a S → I 4a S → I S/I 2b. k.kop. / +Blokea
Idazketa (asm-INV / huts-RdEx) Origin 2000 Idazketa (asm-INV / huts-RdEx) Dir. = S Adi: lasterketak! → 0011 / busy 2a → 0001 / E 1101 / S 1100 / S 2d. INV A (+@L) 1b. INV A / RdEx A 2c. INV A (+@L) Rd A (@R3) L H R1 R2 1a → busy ? NACK S/I 2b. k.kop. / +Blokea eraginkortasuna: ez errefusatu, gorde! R4 R3
Origin 2000 Idazketa (huts-RdEx) L H R Dir. = E 2a → 0001 / busy 4 1000 / E 1b. RdEx A 2c. RdEx A (+@L) L H R 1a → busy → M 4 3a → I 3b. ACK / Blokea 2b. k.kop. + Blokea (espek.) 3c. ACK / Wr (Blokea) I E/M
Origin 2000 Idazketa (asm-INV) L H Dir. = E 1b. INV A 1000 / E 1a S → busy 2. NACK S
Origin 2000 Idazketa (huts-RdEx) L H Dir. = I 1b. RdEx A 2a → 0001 / E → busy → M 3 2b. Blokea I
Origin 2000 Idazketa (asm-INV) L H Dir. = I 1b. INV A 0000 / I 1a S → busy 2. NACK S
Ordezkapena: MNa eguneratzea Origin 2000 Ordezkapena: MNa eguneratzea Dir.: = E 1b. Wr (Blokea) 2a → 0000 / I 0001 / E L H 1a → busy → x 3 2b. ACK M
Ordezkapena: MNa eguneratzea Origin 2000 Ordezkapena: MNa eguneratzea Dir.: = busy 2a → 1001 / busy → 1000 / E 3a 0001 / E 2c. Rd A 1b. Rd A 2b. Blokea (espek) L H R M 2 → busy 2d. Wr (Blokea) → x 4 1a → busy 4 → E 3c. ACK 3b. Blokea I
NUMA-Q multiprozesadoreen egitura: C M S/I PCI IQ link D 4P
NUMA-Q multiprozesadoreen egitura: ▪ 8 x 4 prozesadore / bus (zelataria) ▪ IQ-link remote access cache ▪ Baliogabetu / MOESI / write-back ▪ <Eskaera / Erantzuna> / paketeak gorde ▪ Esteka bikoitzeko zerrendak CMetan: direktorioa (MN): egoera / @k1 direktorioa CM: egoera / @ki-1 / @ki+1 ▪ SCI: scalable coherent interface
SCI koherentzia-protokoloa Blokeen egoerak: ▪ “MNan”: Home (I), Fresh (E, S), Gone (M, O) ▪ CMan: - posizioa: Only, Head, Mid, Tail - egoera: Dirty (M), Fresh (S), Valid (S’), Exclusive (E) Adib.: Only-Fresh, Head-Fresh, Head-Dirty, Mid-Valid... - eta busy egoerak
SCI koherentzia-protokoloa Datuen koherentzia mantentzeko hiru funtzioak: ▪ List Construction Bloke baten kopia bat cachean kargatzeko (Rd) eta kopia-zerrendako buruan kokatzeko. ▪ Roll-out Bloke baten kopia cachetik kentzeko (ordezkapena), eta kopia-zerrenda egokitzeko. ▪ Purge Aldagai bat aldatzeko (Wr), eta, ondorioz, gainerako kopiak baliogabetzeko eta kopia-zerrenda egokitzeko.
SCI koherentzia-protokoloa Irakurketa: List Construction (Home) 1b. LC (Rd A) H | * Dir (MN) I Dir (CM) L 2a → F | @L H 1a → busy → O-F|*-* 3 2b. Blokea
SCI koherentzia-protokoloa Irakurketa: List Construction (Fresh / Gone) Dir (CM) I 1a → busy → H-F | *-@R 5 3. New Head (@L) 1b. LC (Rd A) F | @R Dir (MN) R L 2a → F | @L H 4b. ACK 2b. Blokea + @R Dir (CM) O-F | *-* H-F | *-@R2 → T-V | @L-* 4a → M-V | @L-@R2 zer aldatu baldin Gone?
SCI koherentzia-protokoloa Idazketak: buruan dagoen kopian bakarrik! asmatu / buruan → Purge huts egin → List Construction + Purge asmatu / ez buruan → Roll-Out + L. Const. + Purge
SCI koherentzia-protokoloa Purge (Only-Fresh) 1b. Wr (A-ren egoera) F | @L Dir (MN) 2a → G | @L L H O-F | *-* Dir (CM) 2b. ACK 1a → busy → O-D | *-* 3
SCI koherentzia-protokoloa Purge (Head-Fresh) F | @L Dir (MN) → G | @L 2a 5. INV A 1b. Wr (A-ren eg.) 3. INV A H L R1 R2 6b. ACK + * 2b. ACK 4b. ACK + @R2 H-F | *-@R1 Dir (CM) → I | *-* 6a 1a → busy T-V |@R1-* → O-D | *-* 7 M-V |@L-@R2 Dir (CM) → I | *-* 4a
SCI koherentzia-protokoloa Roll-Out (Wr / ordezk.) M-V | @R1-@R2 Dir (CM) 1a → busy 4 → busy / I | *-* 1b. RO A + @R2 1c. RO A + @R1 R1 L R2 2b. ACK 3b. ACK H-D | *-@L Dir (CM) T-V | @L-* Dir (CM) 2a → H-D | *-@R2 3a → T-V | @R1-*
NUMA-Q: atomikotasuna Arazoak: atomikotasuna (i) L1 M-V|@L2-@R1 L2 Ack + bl H-D | *-@L1 R1 L2 busy M-V|@L1-@R2 R1 L1 Ack + bl H-D | *-@R1 busy L1 Dir (MN) G | @R1 H-D|*-@R2 H R1 R2 T-V | @R1-* NewHead H L1 NewHead H Dir (MN) G | @L2 H L1 L2 Dir (MN) G | @L1 H
NUMA-Q: atomikotasuna Arazoak: atomikotasuna (ii) Dir (MN) F | @L H O-F | *-* L busy LC busy Wr R NACK Dir (MN) F | @R ??
DK-DSM | NUMA-Q: atomikotasuna Arkitektura Paraleloak IF - EHU DK-DSM | NUMA-Q: atomikotasuna R H O-F | *-* L busy LC Wr Dir (MN) F | @R ?? NACK Arazoak: atomikotasuna (ii) any questions?
Datuen koherentziari eusteko, DSM sistemetan, koherentzia-direktorioak erabiltzen dira. Bi modutan antola daiteke direktorioa: blokearen koherentzia-informazioa hitz batean zentralizatuta, MNaren ondoan; edo CMetan banatuta, datu-blokeen kopiekin batera. Koherentzia-eragiketen latentziak eta trafikoak ahalik eta txikiena izan behar dute: eskaera/erantzuna, intervention forwarding eta reply forwarding. Baina arazo nagusia atomikotasun eza da. Eta atomikotasuna ziurtatzeko, egoera iragankorrak eta NACK paketeak erabili ohi dira. Eta protokolo horiek gauzatzeko... Aurreko atalean...