Pokročilé architektury počítačů

Podobné dokumenty
Pokročilé architektury počítačů

Architektury paralelních počítačů I.

Přednáška 1. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Operační systémy. Přednáška 1: Úvod

OPS Paralelní systémy, seznam pojmů, klasifikace

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Mezipaměti počítače. L2 cache. L3 cache

Paměťový podsystém počítače

Struktura a architektura počítačů (BI-SAP) 11

Procesy a vlákna (Processes and Threads)

Architektura Intel Atom

Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury

Roman Výtisk, VYT027

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Paralelní systémy. SIMD jeden tok instrukcí + více toků dat jedním programem je zpracováváno více různých souborů dat

Řízení IO přenosů DMA řadičem

Systém adresace paměti

NSWI /2011 ZS. Principy cpypočítačůčů aoperačních systémů ARCHITEKTURA

Paralelní a distribuované výpočty (B4B36PDV)

Architektura počítačů

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Představení a vývoj architektur vektorových procesorů

Charakteristika dalších verzí procesorů v PC

Pokročilé architektury počítačů

Pokročilé architektury počítačů

Architektury paralelních počítačů II.

Pohled do nitra mikroprocesoru Josef Horálek

Referát (pokročilé architektury počítačů)

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 TECHNICKÉ VYBAVENÍ POČÍTAČŮ

Architektura počítače

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Obecné výpočty na GPU v jazyce CUDA. Jiří Filipovič

Paralelní programování

Procesor Intel Pentium (1) Procesor Intel Pentium (3) Procesor Intel Pentium Pro (1) Procesor Intel Pentium (2)

CHARAKTERISTIKA MODERNÍCH PENTIÍ. Flynnova klasifikace paralelních systémů

Princip funkce počítače

Pamět ová hierarchie, návrh skryté paměti 2. doc. Ing. Róbert Lórencz, CSc.

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Distribuovaný systém je takový systém propojení množiny nezávislých počítačů, který poskytuje uživateli dojem jednotného systému.

Hardware - komponenty počítačů Von Neumannova koncepce počítače. Von Neumannova koncepce počítače

Konzistentnost. Přednášky z distribuovaných systémů

Architektura procesorů PC shrnutí pojmů

Pokročilé architektury počítačů

architektura mostů severní / jižní most (angl. north / south bridge) 1. Čipové sady s architekturou severního / jižního mostu

Architektura procesoru ARM

Intel (2) Intel (1) Intel (3) Intel (4) Intel (6) Intel (5) Nezřetězené zpracování instrukcí:

Kapitola 13: Transakce. Koncept transakce. ACID vlastnosti

Profilová část maturitní zkoušky 2013/2014

Cache paměť - mezipaměť

4. Úvod do paralelismu, metody paralelizace

Charakteristika dalších verzí procesorů Pentium

AGP - Accelerated Graphics Port

Pokročilé architektury počítačů

Architektury počítačů a procesorů

Pamět ová hierarchie, návrh skryté paměti cache 2

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. RNDr. Jiří Barnat, Ph.D.

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

Úvod do problematiky návrhu počítačových systémů. INP 2008 FIT VUT v Brně

Přidělování paměti II Mgr. Josef Horálek

Pokročilé architektury počítačů

Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

Architektury VLIW M. Skrbek a I. Šimeček

Paralelní architektury - úvod

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Procesor. Procesor FPU ALU. Řadič mikrokód

Úvod do GPGPU J. Sloup, I. Šimeček

Architektura Pentia úvod

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

Pamět ová hierarchie, virtuální pamět. doc. Ing. Róbert Lórencz, CSc.

Profilová část maturitní zkoušky 2017/2018

Přednáška #12: Úvod do paralelních počítačů. Paralelní počítače a architektury

Pokročilé architektury počítačů

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ. Ing. Lukáš OTTE, Ph.D.

Systém řízení sběrnice

Základní uspořádání pamětí MCU

Ukázka zkouškové písemka OSY

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Ro R dina procesor pr ů Int In e t l Nehalem Šmída Mojmír, SMI108 PAP PA 2009

Systémy pro sběr a přenos dat

Copyright 2012 EMC Corporation. All rights reserved.

Pokročilé architektury počítačů

Úvod SISD. Sekvenční výpočty SIMD MIMD

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Přidělování CPU Mgr. Josef Horálek

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

PB002 Základy informačních technologií

Paralelní programování

Využití paralelních výpočtů v geodézii

Profilová část maturitní zkoušky 2014/2015

Vstupně - výstupní moduly

Disková pole (RAID) 1

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Architektura Intel Nehalem

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

PROCESOR. Typy procesorů

Koncepce DMA POT POT. Při vstupu nebo výstupu dat se opakují jednoduché činnosti. Jednotlivé kroky lze realizovat pomocí speciálního HW.

Transkript:

Pokročilé architektury počítačů Přednáška 8 Multiprocesory vláknový paralelismus Martin Milata

Obsah Paralelní architektury MIMD model Multi-jádrové a multi-vláknové procesory Klasterové řešení Sdílení pamětí Symetrická sdílená paměť Distribuované paměť klasteru Koherence Cache pamětí Protokoly zajištění koherence Synchronizace

Taxonomie paralelní architektury Dělení architektur podle typů instrukcí Single instruction stream, single data stream (SISD) Single instruction stream, multiple data streams (SIMD) Stejnou instrukci provádí množina procesorů nad různými daty paralelně (oddělené datové pamětí, ale sdílená instrukční část) Procesory s datovým paralelismem (data-level parallelism) Vektorové procesory a grafické procesory (GPU) Multiple instruction stream, single data stream (MISD) Klasický uniprocesor jedno-jádrové jedno-vláknové počítače Proces s komerčním využitím dnes neexistuje Multiple instruction stream, Multiple data stream (MIMD) Procesor načítá vlastní instrukce a pracuje s vlastními daty Kategorie procesorů s paralelismem vláken (thread-level parallelism)

MIMD model multiprocesorů Faktory přispívající k rozšíření MIMD modelu MIMD může poskytnout velice flexibilní řešení MIMD je obvykle výhodný v poměru cena/výkon Kombinace HW a SW podpory přináší možnost použití jako single-user multiprocesorový systém pro výpočetně náročné aplikace Multiprocesorové a multijádrové systémy Klasterové počítače MIMD architektura v praxi Rozlišujeme dva přístupy k jejich realizaci Komoditní klastery budované z běžných komponent (blade provedení serverů) Zakázkové (Custom) klastery konstruované jako kompletní řešení. Obvykle optimalizované pro konkrétnější typ paralelních úloh.

Pojem vlákno Vlákno jako součást spuštěné aplikace V rámci jednoho procesu resp. kontextu jsou definovány dílčí (pseud-)paralelně prováděné sekce tzv. odlehčené procesy Na rozdíl od procesů, vlákna sdílejí paměťový adresním prostor Hlavním přínosem je jednodušší přepínání mezi jejich prováděním Vlákno jako oblast prováděná procesorem Multi-vláknová architektura pojem vlákno používá k referenci části kódu prováděné procesorem s tím, že jednotlivá vlákna v tomto pojetí nemusí přináležet jednomu procesu Vlákno tak nemusí sdílet adresní prostor s druhým, které je na multivláknovém procesoru vykonáváno Každé vlákno může náležet do odlišného kontextu resp. jinému procesu

Multi-jádrové procesory Více procesorových jader umístěných na jednom čipu (multicore) Lepší výrobní technologie umožňuje umístit více tranzistorů na čip Jádra obvykle sdílejí některé prostředky (I/O sběrnice, paměťová sběrnice, některá s úrovní cache) Počátky více-jádrových procesorů - IBM Power4, (Sun T1, Intel Xeon-MP) Dnešní více jádrové procesory obvykle kombinují multi-jádorvý a multi-vláknový přístup Desktopové procesory AMD Athlon II a Intel i[357] architektury

Multi-vláknové procesory Procesory s HW podporou efektivního vykonávání více vláken Vlákna sdílejí prostředky jednoho výpočetního jádra (výpočetní jednotky, cache, TLB, ) Interleaved multithreading Přináší možnost efektivního střídání zpracovávaných instrukci více (obvykle dvou) vláken Mírnění dopadů datových závislostí mezi instrukcemi Jedno vlákno je zablokováno přístupem do paměti, instrukce druhého mohou efektivně využívat procesor Efektivnější a intenzivnější páce s cache Nevýhody jsou spojeny s sdílením a tedy soupeřením vláken o prostředky procesoru a více či méně nutnou replikací některých zdrojů (registry a řídící struktury CPU)

Multi-vláknové procesory Simultaneous multithreading (SMT) Intel představil na procesoru Intel Pentium 4 v podobě HyperThreading Technology (HTT) Umožňuje souběžné vydávání instrukcí různých vláken (v současné době instrukcí dvou vláken) V jednom vláknu se obvykle nenachází dostatek nezávislých instrukcí pro paralelní vydání Vyžaduje ze své podstaty superskalární procesor Nutná replikace řídících částí procesoru a architekturních registrů Přínos multi-vláknového zpracování je závislý na aplikacích, které jsou vykonávány Sdílené prostředky se nesmí stát úzkým místem procesoru Problémy tzv. plýtvání cache pamětí

Otázka vykonávání programu Multi-jádrové procesory Programy mohou být zcela nezávislé samostatné procesy Procesor obsahuje všechny informace potřebné k provádění procesu (kontext procesu registry, prvky práce s pamětí - cache, TLB ) Multi-vláknové procesory Každé jádro provádí vlastní instrukční stream V závislosti na technologii přepínání vláken se může fyzický procesor k OS tvářit jako více logických procesorů Jednotlivá vlákna pak nejsou chápána jako součást jednoho procesu (nemusí sdílet adresní prostor) Nezávislý běh dvou procesů, které sdílí některé části procesoru Efektivní využití Multi-[vláknových jádrových] procesorů je podmíněna dostatkem paralelismů v podobě běžících procesů nebo vláken jedné aplikace

Dvě třídy MIMD multiprocesorů Třídy se odvíjí od počtu procesorů, který v důsledku definuje organizaci paměti a propojovací strategii Architektura s centralizovanou sdílenou pamětí Menší počet procesorů (méně než 100) umožňuje sdílení jedné centralizované paměti Použití cache pamětí per procesor Sdílená paměť dělená do banků (větší propustnost) Pro všechny procesory zůstává zachována stejná (uniformní) přístupová doba Uniform Memory Access (UMA) se Symmetric (shared-memory) Multiprocessors (SMPs)

MIMD s centralizovanou sdílenou pamětí

Dvě třídy MIMD multiprocesorů Architektura multiprocesorů s fyzicky distribuovanou pamětí Umožňuje použití většího počtu procesoru v klasteru v porovnání s architekturou se sdílenou pamětí Lepší škálovatelnost - cenově dostupnější řešení složené z většího počtu levnějších pamětí Větší šířka pásma každý uzel přispívá šířkou lokální směrnice k její celkové velikosti Redukce latence přístupu do paměti - většina přístupu řešena lokálně v rámci jednoho uzlu Komplikovaný a pomalý přístup do pamětí jiných uzlů (vzdálený přístup) Jednotlivé uzly musejí být propojeny vhodnou propojovací sítí (obousměrná přepínaná síť, vedlejší multidimenzionální síť)

MIMD s fyzicky distribuovanou pamětí

Modely přístupu k paměti Na základě modelu adresního prostoru sdílené paměti rozlišujeme dva přístupy Sdílený adresní prostor Adresní prostor je rozprostřen přes všechny uzly resp. části distribuované paměti Vytváří tím jeden logický sdílený adresní prostor Pomocí něj může být adresována libovolná paměťová buňka kdekoliv v distribuované soustavě Model se nazývá Distributed shared-memory (DSM) Přístupová doba v rámci celého prostoru není jednotná Přístup k lokální částí distribuované paměti je výrazně kratší ve srovnání s latencí vzdáleného přístupu Nonuniform memory access (NUMAs) Stejná fyzická adresa vždy ukazuje na stejnou paměťovou buňku

Modely přístupu k paměti Per uzel privátní adresní prostor Každý uzel disponuje vlastním adresním prostorem Uzel lze chápat jako samostatný počítač (Obvykle je samostatným počítačem). Procesor nemá přímou možnost adresovat paměť jiného uzlu Stejná fyzická adresa na různých uzlech reprezentuje různé paměťové buňky Preferovaný paměťový model pro dnešní klasterová řešení Přístup k paměti cizích uzlů Sdílený adresní prostor Load a Store instrukce, jejichž implementace počítá s možným přístupem mimo lokální paměť Privátní adresní prostory Metoda explicitního zasílání zpráv mezi procesory

Paralelní počítání Omezení paralelního počítání Množství možného paralelismu v programu Vysoká cena komunikace (přenos dat mezi uzly, ) Obě omezení lze částečně zmírnit návrhem, implementací nebo reimplementací programu do podoby vhodné pro paralelní počítání Použití algoritmů, který přinese dostatečné množství možného paralelizmu Efektivní zacházení s pamětí přístupy umožňující skrýt latenci vzdáleného přístupu Lokální přístup do paměti cca 50 cyklů, vzdálený mnohem více než 1000 cyklů

Symetrická sdílená paměť Přístup do fyzické paměti realizován pomocí procesory společně sdílené sběrnice Použití cache pamětí pro redukci průměrné latence a potřebné šířky pásma do fyzické paměti Více úrovňová cache paměť s různým stupněm sdílení mezi procesory Cache ukládá jak privátní data (používaná pouze jedním procesorem) tak sdílená data (sdílí se mezi procesory)

Cache paměť a multi-procesory Uložení sdílených dat v cache paměti Redukuje přístupovou latenci a potřebnou šířku pásma pro přístup do fyzické paměti Způsobuje replikaci a dočasné uložení informace na více místech a to i v rámci stejného stupně cache hierarchie Cache přiřazená každému procesoru může obsahovat vlastní kopii dat Tím umožňuje paralelní přístup k datům bez vyvolání konfliktu na společné sběrnici Přináší problém cache koherence Potřeba zajistit, aby každé čtení datové položky obsažené v cache pamětích vrátilo pro něj aktuální zapsanou hodnotu Přináší problém konzistence Definice pořadí read a write požadavků na sdílenou datovou položku

Koherence paměťového systému Paměťový systém považujeme za koherentní 1. Pokud mezi zápisem procesu P na pozici X a pozdějším čtením X tímtéž procesem neprovede jiný proces na tutéž pozici zápis, bude čtená hodnota rovna zapsané 2. Pokud je mezi zápisem procesu P na pozici X a pozdějším čtením X jiným procesem Q dostatečná časové prodleva a třetí proces neprovede zápis na X, bude procesem Q čtená hodnota rovna procesem P zapsané. 3. Požadavky na zápis na pozici X jsou serializovány s tím, že pořadí zápisu hodnot na danou pozici je vnímáno stejně všemi procesy. Pokud dojde k zápisu hodnoty 1 a následně 2, pak žádný proces nemůže nejdříve přečíst hodnotu 2 a pak 1 (nebylo by dodrženo vnímání pořadí zápisů)

Schémata zajištění koherence Pro multiprocesorové systémy s menším počtem procesorů je obvykle protokol zajištění cache koherence implementován v HW Jeho realizace je založena na sledování datových bloků na sdílené sběrnici mezi procesory a fyzickou pamětí Dvě základní třídy protokolu pro zajištění cache koherence Directory based - Stav sdílení bloku fyzické paměti je udržován na jednom místě (directory). Přináší vyšší implementační režii než sooping. Výhodou je možnost použití s větším počtem procesorů Snooping Stav bloků neuchovává centralizovaně. Podmínkou nasazení je možnost zaslání broadcast zprávy, kterou zaregistrují všechny cache kontroléry. Změny aktualizace obsahu bloků v cache se provádí na základně odposlouchávání komunikace jiných procesorů

Snooping protokol Popularita narostla především díky multi-procesorům se sdílenou sběrnicí pro přístup do paměti Většina dnešních multi-jádrových procesorů Odposlech společné sběrnice je implementačně jednoduchý. Zároveň tvoří nejpodstatnější limit škálovatelnosti. Metody snooping protokolu udržování podmínek koherence Metoda exkluzivního přístupu k datové položce při zápisu Spočívá v zápisu předešlém zneplatnění dané položky v cache pamětích jiných procesorů Označuje se jako write-invalidate protocol Metoda aktualizace datové položky v cache pamětech ostatních procesorů

Snooping protokole Zneplatnění položek cache Nejčastěji implementovaný mechanizmus Zápis datové položky předchází zneplatnění jejich kopií v cache paměti ostatních procesorů Často implementován i pro directory based protokol Tím je zajištěn exkluzivní přístup (Jiný procesor s požadavkem na zápis musí nejdříve zaslat požadavek na zneplatnění) Následný přístup jiného procesoru k dané položce vyvolá výpadek jeho cache paměti Procesor Sběrnice Cache CPU A Cache CPU B Paměť 0 CPU A r(x) Cache miss 0 CPU B r(x) Cache miss 0 CPU A w(x) Zneplatnění 1 CPU B r(x) Cache miss 1 0 0 0 0 1 1

Implementace snooping protokolu Zneplatnění položky je zasíláno všem procesorům (resp. cache kontrolérům) pomocí sdílené sběrnice Každý pokus o zápis sdílené položky vyžaduje přístup ke sdílené sběrnici (bez něj požadavek nelze provést) Arbitr sběrnice řeší problém konfliktů při pokusu o zápis stejné položky (Požadavky jsou na sběrnici serializovány) Cache kontrolér zachytí požadavek na zneplatnění a zpracuje jej (pokud je položka v cache obsažena je zneplatněna) Přístup ostatních procesorů k aktualizované hodnotě Složitost přístupu závisí na režimu práce cache při změnách obsahu bloků Cache s okamžitou aktualizací (Write-through cache) Změny v cache jsou automaticky zapsány do paměti (náročné na šířku pásma). Výpadek cache jiného procesoru dostane aktuální hodnotu

Implementace snooping protokolu Přístup ostatních procesorů k aktualizované hodnotě Cache s opožděnou aktualizací (Write-back cache) Složitější implementace snooping Fyzická paměť nemusí disponovat aktuální hodnotou (uložena v bloku cache, který je označen jako modifikovaný, zapsán do paměti bude až při jeho výměně) Snooping je využit jak pro zápis tak pro čtení dat Procesor naslouchá požadavkům na čtení a pokud najde modifikovaný blok s odpovídající adresou ve své cache, poskytne jej. Požadavek na blok s fyzické paměti je následně zrušen Snooping operace vyžadují prohledávání cache Konzumace přístupového pásma, potenciální latence přístupu procesoru konflikty přístupu do cache Duplikace tagů cache (možné paralelní prohledávání), Inklusivní cache hierarchie (L1 záznamy musí být v L2 cache jen L2 cache je prohledávána při snoopingu)

Implementace snooping protokolu Rozlišení sdílených a privátních bloků Pro bloky jenž nejsou sdílené mezi cache různých procesorů je nežádoucí zasílání zprávy o zneplatnění na sdílenou sběrnici Plýtvání šířkou pásma sběrnice, operace s blokem může být provedena lokálně bez účasti ostatních procesorů Rozlišení bloků pomocí příznaku sdílení První požadavek na daný blok je vždy označen jako nesdílený (o blok prozatím požádal jen jeden procesor, jen ten má jeho kopii) Příznak sdílení bloku je nastaven pokud dojde k výpadku cache na stejném bloku u jiného procesoru (jiný procesor chce pracovat se stejným blokem) Výpadek cache je zasílán na sdílenou sběrnici - všechny procesory jej slyší Příznak je vynulován po zaslání požadavku na zneplatnění bloku (blok se stává exkluzivně vlastněným jedním procesorem)

Protokoly cache koherence MSI Jednoduchý protokol cache koherence. Zahrnuje tři stavy bloku v cache Modified: blok obsahuje modifikovaná sdílená data Share: blok obsahuje sdílená data, nejméně jeden procesor má stejný blok v cache Ivalid: blok v cache neobsahuje aktuální verzi dat MESI Vzniká jako rozšíření MSI implementace Exclusive: blok je v platném stavu umístěn jen v lokální cache není sdílen a jeho modifikace není zatížena zprávami na sběrnici MOESI rozšiřuje strategii MESI Owner: blok je sdílen ale lokální cache je jejím vlastníkem a může provádět modifikace bez zasílání zpráv na sběrnici

MSI transakční diagram Popis událostí Obsluhovaná událost / Důsledek zasílán na sběrnici Události způsobené procesorem PrWr zápis hodnoty PrRd čtení hodnoty Transakce na sběrnici BusRd čtení hodnoty bez následné modifikace BusRdX čtení hodnoty s následnou modifikací (zpráva pro invalidaci ostatní cache)

MESI transakční diagram Popis událostí Obsluhovaná událost / Důsledek zasílán na sběrnici Události způsobené procesorem PrWr zápis hodnoty PrRd čtení hodnoty Transakce na sběrnici BusRd[(S)] čtení hodnoty bez následné modifikace [sdílený resp. nesdílený blok] BusRdX čtení hodnoty s následnou modifikací (zpráva pro invalidaci ostatní cache)

MOESI transakční diagram Převzato z: A. James, J.McMonagle: Advanced Cache Coherency

MESIF Vzniká rozšířením modelu MESI Forwarding: blok obsahuje sdílená data. Od bloku Share se liší jeho privilegovaností svůj obsah poskytnout při dotazu na něj. Ostatní bloky s kopií sdílených dat dotaz ignorují. Převzato z: http://www.realworldtech.com/page.cfm?articleid=rwt082807020032&p=5

Adresářová cache koherence Alternativa ke snooping protokolům Definované místo (Directory) ukládá informace o stavu všech bloků, které mohou být uloženy v cache Informace zahrnuje procesory, které ve své cache blok drží, příznak modifikovanosti dat, Množství informace je závislé především na velikosti pamětí a počtu procesorů Protokol se snaží minimalizovat používání společné sběrnice při operacích koherence cache Nevyžaduje explicitní přítomnost sběrnice umožňující zasílání broadcast zpráv Arbitr sběrnice a sběrnice samotná nejsou zatěžovány broadcast zprávami cache koherence

Adresářová cache koherence Informace o blocích mohou být ukládány Centralizovaně snazší implementace, horší škálovatelnost centralizované místo se stává úzkým hrdlem při používání paměti načtení bloku do cache vyžaduje přístup k informacím o stavu bloku Distribuovaně prostor pro ukládání stavu bloku je distribuován přes paměťové bloky nebo paměti jednotlivých výpočetních uzlů (závisí na uspořádání multiprocesorového počítače) prostor je vždy uložen na známe pozici v paměti, tak aby byl přístupný všem procesorům Fyzická adresa se může tvořit podle známého klíče (horní bity ID bloku uzlu, spodní bity offset počátku adresáře) Výpočetní uzel disponuje adresářem pro lokální paměť

Distribuovaný adresář

Jednoduchý protokol adresářové cache koherence Protokol musí implementovat dvě základní operace Výpadek při čtení (Read miss) Zápis do sdíleného bloku a invelidace (Write to a shared, clean cache block) Protokol může vycházet z následujících stavů Shared: více než jeden procesor má ve své cache daný blok, hlavní paměť obsahuje aktuální data Uncached: Data jsou uložena pouze v hlavní paměti, cache žádného procesoru je neobsahuje Modified: Právě jeden procesor má ve své cache kopii bloku, kterou modifikoval. Aktuální data jsou jen v jeho cache, hlevní paměť nemá aktuální data. Procesor je označován jako vlastník bloku

Jednoduchý protokol adresářové cache koherence Popis událostí Obsluhovaná událost / Důsledek zasílán na sběrnici Události způsobené procesorem PrWr zápis hodnoty PrRd čtení hodnoty Transakce na sběrnici BusRd čtení hodnoty bez následné modifikace BusRdX čtení hodnoty s následnou modifikací (zpráva pro invalidaci ostatní cache)

Adresářová cache koherence Položka musí být přítomna pro každý paměťový blok Počet příznaků (bitů) v položce je nejméně o jeden větší než jaký je počet procesorů Každý procesor má vlastní (Px) bit indikující zápis bloku v jeho cache Per blok existuje příznak indikující změny v bloku (Dirty bit) Pokud je blok modifikován (Ditry bit je nastaven), pak může být vlastněn pouze jedním procesorem (jen jeden Px bit může být nastaven) Uzel, který potřebuje změnit stav bloku, nerozesílá broadcast zprávy, ale komunikuje selektivně s procesory, které blok v cache vlastní

Adresářová koherence schéma komunikace Model požadavku čtení sdíleného bloku Získání identity procesorů, které požadovaný blok vlastní Doraz na adresář Odpověď ID procesoru/ů, které data mají v cahce Pokud jsou data modifikována, pak je ID jen jedno Získání dat z určeného procesoru Dotaz na některý z procesorů Zaslání dat a zaslání aktualizace na adresář (nastavení Px bitu pro žádající procesor)

Adresářová koherence schéma komunikace Model požadavku na změnu sdíleného bloku Získání identit procesorů, které mají kopii bloku dat Dotaz na adresář Odpověď s ID procesorů, jejichž cache blok obsahuje Zneplatnění bloku ve sdílených cache Zaslání požadavku na zneplatnění bloku Potvrzení požadavku blok je zneplatněn

Synchronizace Řešení synchronizace je obvykle implementováno jako spolupráce HW a SW HW poskytuje jednoduché primitivy, které SW používá při provádění kritických operací Implementace HW primitivů je ve své podstatě komplikované Obvykle vyžaduje R/W přístup do paměti v jedné nepřerušitelné instrukci Konstrukce dvou párů instrukcí. Pokud je operace provedena atomicky, pak druhé instrukce navrátí specifickou hodnotu Atomické provedení zaručuje, že během provádění žádný jiný procesor nemodifikoval obsah manipulované proměnné

Synchronizace Hardwarové Primitivy Zajišťují v multiprocesorovém řešení atomické operace read modify write nad pamětí Značné zvýšení efektivity synchronizace a možnost jejího použití při větším počtu procesorl Test-and-set: provede kontrolu hodnoty a pokud vyhoví podmínce pak nastaví jinou hodnotou Fetch-and-increment: atomické načtení a inkrement dané hodnoty Load linked (load locked) store conditional: podmíní zápis nové hodnoty nezměněním přečteného stavu proměnné

Závěr Co je to klaster Problematika přístupu k paměti Koherence cache paměti Modely sdílené paměti Protokoly koherence Synchronizace

Literatura John L. Hennessy, David A. Patterson, Computer Architecture: A Quantitative Approach (4th Edition) Andrew S. Tanenbaum, Operating Systems: Design and Implementation A. James, J.McMonagle: Advanced Cache Coherency Internetové zdroje: wikiperia.org 42