Architektury paralelních počítačů I. Úvod, Koherence a konzistence u SMP Ing. Miloš Bečvář s použitím slajdů Prof. Ing. Pavla Tvrdíka, CSc.
Osnova přednášky Typy paralelismu a jejich využití v arch. poč. Architektury SMP vs DMP; SAP vs DAP Programátorské modely SM a MP Problém modelu sdílené paměti Problém paměťové koherence Cache koherenční protokoly na SMP
Typy paralelismu a jeho využití v arch. počítačů Paralelismus na úrovni instrukcí (ILP) - Pipelining instrukcí, ILP procesory - Superskalární, superpipelinové procesory Datový paralelismus (DLP) - Pipelining datových operací Jemnozrnný paralelismus (uvnitř procesoru) - SIMD a vektorové (ko)procesory Paralelismus na úrovni procesů (vláken - threadů) (TLP) - Symetrické multiprocesory (SMP), Distribuované multiprocesory (DMP), vícevláknové procesory, svazky (clustery), metapočítače a další
Terminologický chaos Proces vs vlákno (process vs thread) - Pojem procesu původně znamenal jednu instanci kódu, dat, zásobníku a stav registrů (viz původní UNIX proces) - Procesem dnes vnímáme kolekci výpočetních vláken (společný kód, část dat, ale zvláštní zásobník a stav registrů pro každé vlákno) Procesor vs procesorové jádro (core) - Procesor tradičně je tvořen jednou datovou částí a řadičem vykonávajícím jedno výpočetní vlákno (dříve proces) a je typicky realizován na jednom čipu. - Dnes jsme na čipu schopni realizovat více takových procesor a původní pojem procesor je nahrazován pojmem procesorové jádro (core) - Procesorové jádro navíc je často schopno současně zpracovávat více vláken (dříve procesů) tzv. multithreaded core (nad rámec X36APS) Dnešní a budoucí čip = procesor obsahuje Jedno či více procesorových jader, která jsou schopna současně zpracovávat jedno či více výpočetních vláken. (Multicore multithreaded processor.) Vícejádrový procesor je totéž co v původní terminologii multiprocesor na jednom ipu. Ve výkladu paralelních počítačů budeme používat původní terminologii pro proces a procesor!
Multiprocesorové systémy - klasifikace Dle HW realizace Podle programátorského modelu Sdílená pam (Shared Memory, SM ) standard OpenMP P edávání zpráv (Message Passing, MP) standardy RPC a MPI Přirozená implementace je SM na SMP a MP na DMP, svazcích a metapočítačích. Oba programátorské modely lze ale v principu implementovat na libovolném HW.
Symetrický multiprocesor - SMP PE = Processing Element Sdílená paměť PE Cache (sk. paměť)
Multiprocesor s distribuovanou pamětí - DMP Procesor či SMP Lokální paměť
DMP paměťový model sdílená paměť (SAP) Síť typu paměť - paměť
DMP paměťový model oddělená paměť (DAP) fyzický Paměť Procesor Standard MPI Síť typu paměť - paměť I na tomto typu počítače je možné vytvořit Virtuální Sdílenou Paměť! OS zajistí formou RPC čtení dat ze vzdálené fyzické paměti.
Symetrické multiprocesorové systémy (SMP) = cache Vícejádrové procesory = SMP na čipu a v budoucnu každý počítač bude SMP
Symetrické multiprocesorové systémy (SMP) = cache
Cache (skryté paměti) v SMP
Problém koherence skrytých pamětí počáteční stav P 1 P 2 P 3 X:? X:? X:? X: 6
Problém koherence skrytých pamětí t =1 P 1 P 2 P 3 PrRd(x) 6 Read miss! X: 6? X:? X:? P1: BusRd(x) X: 6 Procesor 1 nenajde data v cache a proto musí provést čtení z paměti.
Problém koherence skrytých pamětí t =2 P 1 P 2 PrRd(x) P 3 Read miss! 6 X: 6 X:? X:? 6 P3: BusRd(x) X: 6 Procesor 3 také nenajde data v cache a proto musí provést čtení z paměti. Nyní mohou oba procesory opakovaně nezávisle číst položku X.
Problém koherence skrytých pamětí t =3 P 1 P 2 PrWr(x,9) P 3 Write hit! X: 6 X:? X: 69 P3: BusWr(x,9) X: 6 / 9 Procesor 3 změní hodnotu X v cache (vždy) a také v hlavní paměti (jde-li o strategii současného zápisu Write Through) Bez dalších opatření si ovšem procesor 1 stále myslí, že X=6!
Problém koherence skrytých pamětí t =4 PrRd(x) P 1 6 Read hit! P 2 P 3 X: 6 X:? X: 9 X: 6 / 9 Bez dalších opatření si ovšem procesor 1 stále myslí, že X=6!
Problém koherence skrytých pamětí t =5 P 1 PrRd(x) P 2 Read P 3 miss! 6 / 9 X: 6 X: 6? / 9 X: 9 P2: BusRd(x) X: 6 / 9 Procesor 2 nyní přečte 6 nebo 9 v závislosti na strategii zápisu. Hodnota X= 9 se z cache procesoru 3 při strategii Write Back dostane do hlavní paměti až při nahrazování příslušného bloku!
Problém koherence skrytých pamětí souhrn příkladu Ani cache se strategií WT nezaručuje rozumné chování multiprocesorového systému s více procesory a skrytými pamětmi. Očekávané rozumné chování (chování stejné jako v systému bez skrytých pamětí): Každá operace čtení vrátí hodnotu naposledy zapsanou do této položky. Toto je intuitivní definice koherentního systému skrytých pamětí. Co znamená naposledy zapsanou? Chápou všechny procesory naposledy stejně?
Problém koherence skrytých pamětí - přesněji Definice: Řekneme že multiprocesorový paměťový systém je koherentní jestliže výsledek jakéhokoli provádění programu je takový, že pro každé paměťové místo je možné sestavit myšlené sériové pořadí čtení a zápisů k tomuto paměťovému místu a platí 1. Paměťové operace k danému paměťovému místu pro každý proces jsou provedeny v pořadí, ve kterém byly spuštěny tímto procesem. 2. Hodnoty vracené každou operací čtení jsou hodnotami naposledy provedené operace zápis do daného paměťového místa vzhledem k sériovému pořadí. Rozbor: Požadavek koherence definuje, že paměťový systém nemůže změnit pořadí provádění čtení a zápisů daného paměťového místa z hlediska každého procesu (toto musí být ostatně splněno i na jednoprocesorovém počítači). Požadavek možnosti sestavit sériové pořadí čtení a zápisů znamená, že pořadí přístupů ke každému paměťovému místu je vnímáno všemi procesy (procesory) stejně. Vzhledem k tomu, že čtení nemění stav paměťového místa, vynucuje tato definice propagaci zápis (všichni se o zápisu musí dozvědět jinak neplatí podm.2) a serializaci zápis k danému paměťovému místu (jinak různé procesory chápou jinak co je poslední provedená operace zápisu a nelze sestavit sériové pořadí operací).
Formálnější definice koherentního paměťového systému Tato definice je zcela ekvivalentní definici na předchozím slajdu. Její výhodou je formální vymezení pojmů paměťové operace a serializace zápisů. K zajištění koherence slouží tzv. cache koherenční protokoly.
Koherenční protokol založený na odposlechu (snooping)
Protokol Write Through Write Non Allocate zaj. koherence P 1 Stav bloku V valid I invalid P 2 P 3 X:? I X:? I X:? I X: 6 Jedinou změnou oproti jednoprocesorovému cache systému je implementace tzv. snoopingu (odposlechu sběrnice)
Příklad s WTWNA cache koherenčním protokolem t =1 P 1 P 2 P 3 PrRd(x) 6 Read miss! X:? 6 VI X:? I X:? I P1: BusRd(x) X: 6 Procesor 1 nenajde data v cache a proto musí provést čtení z paměti. Stav bloku v cache u P1 je nyní valid (platný).
Příklad s WTWNA cache koherenčním protokolem t =2 P 1 P 2 PrRd(x) P 3 Read miss! 6 X: 6 V X:? I X:? 6 VI P3: BusRd(x) X: 6 Procesor 3 také nenajde data v cache a proto musí provést čtení z paměti. Nyní mohou oba procesory opakovaně nezávisle číst položku X.
Příklad s WTWNA cache koherenčním protokolem t =3 P 1 P 2 PrWr(x,9) P 3 Write hit! X: 6 VI X:? I X: 69 V P3: BusWr(x,9) X: 96 Procesor 3 změní hodnotu X v cache a také v hlavní paměti Řadič cache u P1 odposlechne zápis na sběrnici a zneplatní blok X. (nový stav bloku X v cache u P1 je invalid což přinutí P1 přečíst novou hodnotu.)
Příklad s WTWNA cache koherenčním protokolem t =4 PrRd(x) P 1 9 Read miss! P 2 P 3 X: 9 6 IV I X:? I X: 9 V P1: BusRd(x) X: 9 Díky zneplatnění položky v cache je nyní procesor nucen přečíst si aktualizovanou hodnotu X z hlavní paměti.
Formální definice koherenčního protokolu s odposlechem Invalidate vychází téměř vždy lépe než update neboť při opakovaném zápisu stačí zneplatnit ostatní kopie jednou. U update protokolu je nutno opakovaně udržovat všechny kopie bez ohledu na to, zdali je o novou hodnotu bloku zájem.
Write Through Write Non Allocate Invalidation Snooping Prot. Ve stavovém diagramu vlevo jsou přechody iniciované procesorem u kterého je daný KSP: PrRd čtení dat z daného bloku procesorem, PrWr zápis do daného bloku. Za lomítkem jsou akce, které provádí KSP v průběhu daného přechodu: BusRd čtení bloku z hlavní paměti, BusWr zápis změněné hodnoty do paměti Ve stavovém diagramu vpravo jsou přechody iniciované v důsledku události na sběrnici detekované odposloucháváním. U WTWNA je jedinou událostí na sběrnici, kterou je třeba monitorovat BusWr, který způsobí zneplatnění daného bloku ve všech ostatních skrytých pamětech. A koli cílem je zachovat koherenci v i jednotlivým pam ovým míst m (bajt m), jednotkou koheren ního protokolu z praktických d vod je cache blok (typicky 16-64B)
Škálovatelnost protokolu WTWNA
Write Back invalidation protokol - MESI Podobně existuje protokol MSI a MOESI.
MESI protokol Počáteční stav P 1 P 2 P 3 X:? I X:? I X:? I X: 6
MESI protokol t =1 P 1 P 2 P 3 PrRd(x) 6 Read miss! X: 6? EI X:? I X:? I P1: BusRd(x) S=0 S=0 X: 6 Procesor 1 nenajde data v cache a proto musí provést čtení z paměti. KSP u proc.2 a proc.3 indikují signálem S=0, že nemají kopii bloku X proto je stav bloku u proc.1 Exclusive.
MESI protokol t =2 P 1 P 2 PrRd(x) P 3 Read miss! 6 X: 6 SE X:? I X:? 6 SI S=1 S=0 P3: BusRd(x) X: 6 Při čtení X z paměti indikuje KSP u procesoru 1, že daný blok již má ve své cache nastavením S=1. To způsobí, že nový stav bloku jak u proc.3 tak u proc.1 je Shared.
MESI protokol t =3 P 1 P 2 PrWr(x,9) P 3 Write hit! X: 6 IS X:? I X: 69 SM P3: BusUpgrd(x) X: 6 Procesor 3 zjistí, že chce zapisovat do bloku ve stavu Shared, proto umístí na sběrnici transakci BusUpgrd kterou zneplatní všechny ostatní kopie daného bloku v ostatních cache. BusUpgrd je krátká a nenese data, paměť není modifikována.
MESI protokol t =4 PrRd(x) P 1 6 Read miss! P 2 P 3 X: 96 IS X:? I X: 9 MS P1:BusRd(X) S=0 P3:Cache Flush S=1 X: 69 Procesor P1 při načítání obdrží aktuální hodnotu X přímo z cache procesoru 3. Při této příležitosti je též modifikována hodnota v hlavním paměti. V obou cache přechází blok do stavu Shared
MESI protokol t =5 P 1 PrWr(x, 11) P 2 P 3 Write miss! X: 9 I S X:? 11 MI X: 9 SI P2: BusRdX(x) X: 9 Procesor 2 chce změnit hodnotu X, kterou nemá v cache, proto vygeneruje transakci BusRdX, která načte daný blok a zároveň zneplatní všechny ostatní kopie. Nový stav bloku v cache u proc.2 je Modified.
Závěr Multiprocesorové systémy využívají paralelismu na úrovni procesů (vláken) HW modely jsou SMP a DMP Distribuovaná paměť v modelu DMP může být buď fyzicky sdílená (SAP) nebo oddělená (DAP) Programátorské modely jsou sdílená paměť (SP) a předávání zpráv (MP) Oba programátorské modely lze realizovat na libovolném HW Pro model sdílené paměti na SMP je stěžejní zaručení koherence skrytých pamětí K zajištění koherence skrytých pamětí slouží cache koherenční protokoly Cache koherenční protokoly jsou dle strategie zápisu WTWNA a MESI (příp. MSI, MOESI)