• Výpočetní systémy se sdílenou pamětí. Paměť výpočetních systémů

    Organizace paměti MPS. segmentace paměti. Výpočet adresy. Interní mezipaměť.

    Paměť mikroprocesorového systému plní funkci dočasného nebo trvalého uložení dat a příkazů. Množství paměti určuje přípustnou složitost algoritmů prováděných systémem a do určité míry také rychlost systému jako celku. Paměťové moduly jsou provozovány na paměťových čipech (provozních nebo trvalých). Stále častěji se jako součást mikroprocesorových systémů používá flash paměť, což je energeticky nezávislá paměť se schopností opakovaně přepisovat obsah.

    Pro připojení paměťového modulu k systémové sběrnici se používají bloky rozhraní, které zahrnují dekodér adresy (selektor), obvod pro zpracování řídicího signálu sběrnice a datové vyrovnávací paměti (obrázek 7.4.1).

    Obrázek 7.4.1. Schéma zapojení paměťového modulu.

    V paměťovém prostoru mikroprocesorového systému je obvykle několik speciálních oblastí, které provádějí speciální funkce. Tyto zahrnují:

    – paměť spouštěcího programu spuštěná v paměti ROM nebo flash;

    - paměť pro zásobník nebo zásobník (Stack) - je součástí paměť s náhodným přístupem, určený pro dočasné ukládání dat;

    – tabulka vektorů přerušení obsahující adresy startu programů pro obsluhu přerušení;

    – paměť zařízení připojených k systémové sběrnici.

    Všechny ostatní části paměťového prostoru mají zpravidla univerzální účel. Mohou obsahovat data i programy (samozřejmě v případě jednosběrnicové architektury).

    Často je paměťový prostor rozdělen na segmenty s programově měnitelnou adresou začátku segmentu a s pevná velikost segment. Například v procesor Intel Segmentace paměti 8086 je organizována následovně.

    Celá paměť systému není reprezentována jako souvislý prostor, ale jako několik kusů - segmentů daná velikost(každý 64 KB), jehož pozici v paměťovém prostoru lze programově měnit.

    Pro uložení kódů adres paměti se nepoužívají samostatné registry, ale dvojice registrů:

    Registr segmentu určuje adresu začátku segmentu (tedy pozici segmentu v paměti);

    Registr ukazatele (offsetový registr) určuje pozici pracovní adresy v segmentu.

    V tomto případě je fyzická 20bitová adresa paměti přiřazená externí adresové sběrnici vytvořena tak, jak je znázorněno na obrázku 7.4.2, tj. přidáním offsetu a adresy segmentu s posunem o 4 bity.

    Obrázek 7.4.2. Vytvoření adresy fyzické paměti z adresy segmentu a offsetu.

    Pozice této adresy v paměti je znázorněna na obrázku 7.4.3.

    Obrázek 7.4.3. Umístění fyzické adresy v paměti

    Segment může začínat pouze na 16bajtové hranici paměti (protože adresa začátku segmentu má ve skutečnosti čtyři nuly nižšího řádu, jak je vidět na obrázku 7.4.2), tedy na adrese, která je násobkem 16. Tyto platné hranice segmentů se nazývají hranice odstavců.

    Všimněte si, že zavedení segmentace je způsobeno především tím, že vnitřní registry procesoru jsou 16bitové a adresa fyzické paměti je 20bitová (16bitová adresa umožňuje použít pouze 64 KB paměti, což je jasné nedostatek).

    Cache je umístěna mezi hlavní pamětí (RAM) a centrální procesorová jednotka snížit čas strávený přístupem CPU k OP.

    Myšlenka mezipaměti je založena na předpovídání nejpravděpodobnějších přístupů CPU k RAM. „Nejpravděpodobnější“ data a instrukce jsou zkopírovány do rychlé mezipaměti CPU, než je CPU skutečně použije, takže aktuálně používaná data a instrukce mohou být rychle přístupné bez použití RAM. Tento přístup je založen na principu programové lokality nebo, jak se říká, vnořenosti výzev, to znamená, že adresy po sobě jdoucích výzev do OP tvoří zpravidla kompaktní skupinu. Při přístupu k paměti RAM se do mezipaměti nekopírují jednotlivá data, ale bloky informací, včetně těch dat, která budou s největší pravděpodobností použita v CPU v následujících krocích práce. V tomto ohledu jsou následné instrukce vybírány CPU již ne z RAM, ale z rychlé mezipaměti. Když CPU potřebuje číst nebo zapisovat nějaká data do RAM, nejprve zkontroluje jejich přítomnost v mezipaměti. Účinnost systému mezipaměti závisí na velikosti bloku a programovém algoritmu.

    Kapitola 11

    Organizace paměti výpočetní systémy

    Ve výpočetních systémech, které kombinují mnoho paralelních procesorů nebo strojů, je problém správné organizace paměti jedním z nejdůležitějších. Rozdíl mezi rychlostí procesoru a paměti byl u jednoprocesorových VM vždy kamenem úrazu. Multiprocesorová povaha CS vede k dalšímu problému - problému současného přístupu několika procesorů k paměti.

    Podle toho, jak je organizována paměť víceprocesorových (vícestrojových) systémů, rozlišujeme výpočetní systémy sdílená paměť(sdílená paměť) a VS s distribuovanou pamětí (distribuovaná paměť). V systémy sdílené paměti(často označované jako sdílená nebo sdílená paměť) Virtuální počítač je považován za sdílený prostředek a každý z procesorů má plný přístup k celému adresnímu prostoru. Systémy se sdílenou pamětí se nazývají silně propojený(těsně propojené systémy). Obdobná konstrukce výpočetních systémů probíhá jak ve třídě SIMD, tak ve třídě MIMD. Někdy se pro zdůraznění této okolnosti zavádějí speciální podtřídy, které k jejich označení používají zkratky SM-SIMD (Shared Memory SIMD) a SM-MIMD (Shared Memory MIMD).

    Ve variantě distribuovaná paměť každý z procesorů má vlastní paměť. Procesory jsou sloučeny PROTI sítě a mohou si v případě potřeby vyměňovat data uložená ve své paměti, předávat si mezi sebou tzv zprávy. Tento typ letadla se nazývá volně vázané(volně propojené systémy). Slabý související systémy se také nacházejí jak ve třídě SIMD, tak ve třídě B MIMD a někdy, pro zdůraznění této vlastnosti, jsou zavedeny podtřídy DM-SIMD (Distributed Memory SIMD) a DM-MIMD (Distributed Memory MIMD).

    V některých případech se nazývají výpočetní systémy se sdílenou pamětí multiprocesory, a systémy s distribuovanou pamětí - vícepočítačů.

    Rozdíl mezi sdílenou a distribuovanou pamětí je rozdíl ve struktuře virtuální paměť, tedy jak vypadá paměť ze strany procesoru. Fyzicky je téměř každý paměťový systém rozdělen na autonomní komponenty, ke kterým lze přistupovat nezávisle. Co odděluje sdílenou paměť od distribuované paměti, je to, jak paměťový subsystém interpretuje adresu buňky přijatou od procesoru. Předpokládejme například, že procesor provede načtení RO, instrukci i znamenající "Načíst registr R0 s obsahem buňky i". V případě sdílené paměti je i globální adresa a ukazuje na stejné místo pro jakýkoli procesor. V distribuovaný systém paměť já jsem místní adresa Pokud dva procesory provedou instrukci load RO, i, pak každý z nich přistoupí k i-té buňce ve své lokální paměti, tj. různé buňky a do registrů R0 lze načíst různé hodnoty.

    Rozdíl mezi těmito dvěma paměťovými systémy musí programátor vzít v úvahu, protože určuje způsob interakce částí paralelizovaného programu. Ve variantě se sdílenou pamětí stačí vytvořit datovou strukturu v paměti a paralelně používaným podprogramům předat odkazy na tuto strukturu. V systému distribuované paměti je nutné mít kopii sdílených dat v každé lokální paměti. Tyto kopie jsou vytvářeny vložením sdílených dat do zpráv zasílaných jiným zpracovatelům.

    Prokládaná paměť

    Fyzicky se paměť výpočetního systému skládá z několika modulů (bank), přičemž zásadní otázkou je, jak je v tomto případě distribuován adresní prostor (soubor všech adres, které může procesor vytvořit). Jedním ze způsobů, jak přidělit virtuální adresy paměťovým modulům, je rozdělit adresový prostor do po sobě jdoucích bloků. Pokud je paměť P banky, pak buňku s adresou i při dělení bloku bude v bance s číslem i/ n. V systému prokládaná paměť(prokládaná paměť) po sobě jdoucí adresy jsou umístěny v různých bankách: buňka s adresou i je v bance s číslem i mod P. Nechť se například paměť skládá ze čtyř bank, každá po 256 bajtech. Ve schématu blokového adresování by první bance byly přiděleny virtuální adresy 0-255, druhé by byly 256-511 atd. V prokládaném schématu by po sobě jdoucí buňky v první bance měly virtuální adresy 0, 4, 8 , .. .. ve druhé bance - 1, 5, 9 atd. (obr. 11.1, a).

    Rozdělení adresového prostoru podle modulů umožňuje současně zpracovávat požadavky na přístup do paměti, pokud odpovídající adresy patří do různých bank, může procesor požádat o přístup k buňce v jednom z cyklů i a v další smyčce - do buňky j. Li iAj jsou v různých bankách, budou informace přenášeny v po sobě jdoucích cyklech. Cyklus zde označuje cyklus procesoru, zatímco celý cyklus paměti trvá několik cyklů procesoru. Tedy v tento případ procesor nemusí čekat na dokončení celého cyklu přístupu k buňce i. Uvažovaná technika umožňuje zvýšení propustnosti: pokud se paměťový systém skládá z

    Rýže. 11.1 - Prokládaná paměť: a - distribuce adres; b- prvky načtené v krocích po 9 z pole 8 x 8

    dostatečný počet bank, je možné vyměňovat informace mezi procesorem a pamětí rychlostí jedno slovo za cyklus procesoru, bez ohledu na dobu trvání paměťového cyklu.

    Rozhodnutí o tom, kterou možnost distribuce adres zvolit (blokovanou nebo pruhovanou), závisí na očekávaném pořadí přístupu k informacím. Programy jsou kompilovány tak, že sekvenční instrukce jsou umístěny v buňkách se sekvenčními adresami, takže je vysoce pravděpodobné, že po extrakci instrukce z buňky s adresou i se instrukce z buňky provede i + 1. Překladač také vkládá prvky vektorů do po sobě jdoucích buněk, takže při operacích s vektory můžete využít výhod metody prokládání. Z tohoto důvodu vektorové procesory obvykle používají nějakou formu prokládání adres. Multiprocesory se sdílenou pamětí stále používají blokové adresování, protože vzory přístupu do paměti v systémech MIMD se mohou značně lišit. V takových systémech je cílem připojit procesor k bloku paměti a využít v něm maximum informací před přepnutím na jiný blok paměti.

    Paměťové systémy často poskytují dodatečnou flexibilitu při získávání prvků vektorů. V některých systémech je možné současně načíst každý n-tý prvek vektoru, například při extrahování prvků vektoru PROTI, uloženy v po sobě jdoucích paměťových buňkách; na P= 4, paměť se vrátí Vzdálenost mezi prvky se nazývá krok po indexu nebo "krok"(krokem). Jedním ze zajímavých využití této vlastnosti je Matrix Access. Pokud je krok indexu o jeden větší než počet řádků v matici, jediný požadavek na přístup do paměti vrátí všechny diagonální prvky matice (obrázek 11.1b). Je odpovědností programátora, aby zajistil, že všechny extrahované maticové prvky jsou umístěny v různých bankách.

    Modely paměťové architektury výpočetních systémů

    V rámci sdílené i distribuované paměti je implementováno několik modelů architektur paměťového systému.

    Rýže. 11.2. Klasifikace modelů paměťové architektury výpočetních systémů

    Na Obr. 11.2 ukazuje klasifikaci takových modelů používaných ve výpočetních systémech třídy MIMD (platí i pro třídu S1MD).

    Modely architektur sdílené paměti

    V systémech sdílené paměti mají všechny procesory stejný přístup ke stejnému adresnímu prostoru. Jedna paměť může být postavena jako jednobloková nebo modulární, ale většinou se praktikuje druhá možnost.

    Nazývají se výpočetní systémy se sdílenou pamětí, kde je přístup libovolného procesoru do paměti prováděn jednotně a trvá stejnou dobu systémy s homogenní přístup do paměti a jsou zkráceny jako UMA (Uniform Memory Access). Toto je nejběžnější architektura letadel s paralelní sdílenou pamětí.

    Technicky systémy UMA předpokládají přítomnost uzlu spojujícího každý z nich P procesory s každým T paměťové moduly. Nejjednodušší způsob, jak sestavit takový CS, je zkombinovat několik procesorů (P i) s jednou pamětí (M p) přes společnou sběrnici - je znázorněno na obr. 11.3, A. V tomto případě však může na sběrnici v daný okamžik komunikovat pouze jeden z procesorů, to znamená, že procesory musí soutěžit o přístup ke špičce. Když procesor P i načte instrukci z paměti, ostatní procesory musíte počkat, až se pneumatika uvolní. Li PROTI Vzhledem k tomu, že do systému vstupují pouze dva procesory, jsou schopny pracovat téměř na maximální výkon, protože jejich přístup ke sběrnici může být prokládaný: zatímco jeden procesor dekóduje a provádí instrukci, druhý může použít sběrnici k načtení další instrukce z paměti. Když se však přidá třetí procesor, výkon začne klesat. Pokud je na sběrnici deset procesorů, křivka výkonu sběrnice (obr. H.3, A) bude horizontální, takže přidání 11. procesoru již nezlepší výkon. Spodní křivka na tomto obrázku ilustruje skutečnost, že paměť a sběrnice mají pevnou šířku pásma určenou kombinací doby cyklu paměti a sběrnicového protokolu a ve víceprocesorovém systému se sdílenou sběrnicí propustnost distribuovány mezi více procesorů. Pokud je cyklus procesoru delší než cyklus paměti, lze ke sběrnici připojit mnoho procesorů. Skutečný procesor je však obvykle hodně rychlejší než paměť Proto se toto schéma příliš nepoužívá.

    Rýže. 11.3. Sdílená paměť: a - kombinování procesorů pomocí sběrnice; b - systém s lokálními cachemi; PROTI- výkon systému jako funkce počtu procesorů na sběrnici; d - multiprocesorový VS se sdílenou pamětí sestávající ze samostatných modulů

    Alternativní způsob sestavení multiprocesorového CS se sdílenou pamětí na bázi NML je znázorněno na obr. 11.3, G. Zde byl hrot nahrazen přepínačem, který směruje požadavky procesoru na jeden z několika paměťových modulů. Přestože existuje více paměťových modulů, všechny jsou součástí jednoho virtuálního adresového prostoru. Výhodou tohoto přístupu je, že přepínač je schopen obsluhovat více požadavků paralelně. Každý procesor lze připojit k vlastnímu paměťovému modulu a přistupovat k němu maximální povolenou rychlostí. Při pokusu o přístup ke stejnému paměťovému modulu ve stejnou dobu může dojít ke sporu mezi procesory. V tomto případě má přístup pouze jeden procesor a ostatní jsou blokovány.

    Bohužel architektura UMA není dobře škálovatelná. Nejběžnější systémy obsahují 4-8 procesorů, mnohem méně často 32-64 procesorů. Kromě toho nelze takové systémy klasifikovat jako odolné proti poruchám, protože selhání jednoho procesoru nebo paměťového modulu má za následek selhání celého letadla.

    Dalším přístupem ke stavbě letadla se sdílenou pamětí je heterogenní přístup k paměti, označovaný jako NUM A (Non-Uniform Memory Access).Tento stále obsahuje jeden adresní prostor, ale každý procesor má lokální paměť. Procesor přistupuje přímo ke své vlastní místní paměti, což je mnohem rychlejší než přístup ke vzdálené paměti přes přepínač nebo síť. Takový systém může být doplněn globální pamětí, pak lokální paměťová zařízení hrají roli rychlé cache paměti pro globální paměť. Takové schéma může zlepšit výkon letadla, ale není schopno odložit přímé vyrovnání výkonu na neurčito. Pokud má každý procesor lokální cache (obr. 11.3.6), je zde vysoká pravděpodobnost (p > 0.9), že požadovaný příkaz nebo data jsou již v místní paměti. Rozumná pravděpodobnost zásahu do místní paměti výrazně snižuje počet přístupů procesoru Na globální paměti a vede tak ke zvýšení efektivity. Místo zlomu křivky výkonu (horní křivka na obr. 11.3, PROTI), bod, kde je přidání procesoru stále účinné, se nyní přesune do oblasti 20 procesorů a tenká čára, kde se křivka stává horizontální k oblasti 30 procesorů.

    Jako součást konceptu NUMA je implementováno několik různých přístupů, označovaných zkratkami SOMA,CC- NUMA A NCC- NUMA.

    V architektura pouze pro cache(COMA, Cache Only Memory Architecture) lokální paměť každého procesoru je postavena jako velká mezipaměť pro rychlý přístup z „jeho“ procesoru. Mezipaměti všech procesorů jsou společně považovány za globální paměť systému. Neexistuje žádná skutečná globální paměť. Hlavní rys konceptu SOMA je vyjádřen v dynamice. Data zde nejsou staticky vázána na konkrétní paměťový modul a nemají jedinečnou adresu, která zůstává nezměněna po celou dobu životnosti proměnné. V architektuře COMA jsou data přenášena do mezipaměti procesoru, který si je naposledy vyžádal, přičemž proměnná není fixována jedinečnou adresou a lze ji kdykoli umístit do libovolné fyzické buňky. Přenos dat z jedné lokální mezipaměti do druhé nevyžaduje účast v tomto procesu operační systém, ale zahrnuje složitý a drahý hardware pro správu paměti. K uspořádání takového režimu, tkz adresáře mezipaměti. Všimněte si také toho poslední kopie datový prvek není nikdy odstraněn z mezipaměti.

    Protože architektury COMA přesouvají data do místní mezipaměti procesoru vlastníka, mají takové AN značnou výkonnostní výhodu oproti jiným architekturám NUM A. Na druhou stranu, pokud je jedna proměnná nebo dvě různé proměnné uloženy na stejném řádku stejné mezipaměti , jsou vyžadovány dvěma procesory, musí být tento řádek mezipaměti přesouván tam a zpět mezi procesory při každém přístupu k datům. Tyto efekty mohou záviset na detailech alokace paměti vedoucí k nepředvídatelným situacím.

    Modelka cache-koherentní přístup k heterogenní paměti(CC-NUMA, Cache Coherent Non-Uniform Memory Architecture) se zásadně liší od modelu COMA. Systém CC-NUMA nepoužívá vyrovnávací paměť, ale běžnou fyzicky distribuovanou paměť. Nedochází ke kopírování stránek nebo dat mezi paměťovými místy. Neexistuje žádné softwarově implementované předávání zpráv. Existuje pouze jedna paměťová karta, jejíž části jsou fyzicky propojeny měděným kabelem, a "chytrý" hardware. Hardwarově implementovaná koherence mezipaměti znamená, že není potřeba žádná software uložit více kopií aktualizovaných dat nebo je přenést. To vše řeší hardwarová úroveň. Přístup k lokálním paměťovým modulům v různých uzlech systému lze provádět současně a je rychlejší než ke vzdáleným paměťovým modulům.

    Rozdíl mezi modelem a cache-inkoherentní přístup k heterogenní paměti(NCC-NUMA, Non-Cache Coherent Non-Uniform Memory Architecture) od CC-NUMA je zřejmé z názvu. Architektura paměti předpokládá jeden adresní prostor, ale neposkytuje globální konzistenci dat na úrovni hardwaru. Použití takových dat je plně v odpovědnosti softwaru (aplikací nebo kompilátorů). I přes tuto okolnost, která se zdá být nedostatkem architektury, se ukazuje jako velmi užitečná při zlepšování výkonu výpočetních systémů s paměťovou architekturou typu DSM, která je zvažována v části „Modely architektury distribuované paměti“.

    Obecně se nazývají letadla se sdílenou pamětí NUMA architektury s virtuální sdílenou pamětí(architektury virtuální sdílené paměti). Tento typ architektury, zejména CC-NUMA, v Nedávno je považován za nezávislý a spíše slibný typ výpočetních systémů třídy MIMD, proto budou takové CS podrobněji diskutovány níže.

    Modely architektur distribuované paměti

    V distribuovaném paměťovém systému má každý procesor svou vlastní paměť a může ji pouze adresovat. Někteří autoři tento typ systému nazývají vícestrojová letadla nebo vícepočítače, zdůraznění skutečnosti, že stavebními kameny systému jsou samy malé výpočetní systémy s procesorem a pamětí. Modely architektur s distribuovanou pamětí se běžně označují jako architektura bez přímý přístup do vzdálené paměti(NORMA, No Remote Memory Access). Tento název pochází ze skutečnosti, že každý procesor má přístup pouze ke své vlastní lokální paměti. Přístup ke vzdálené paměti (lokální paměti jiného procesoru) je možný pouze výměnou zpráv s procesorem, který vlastní adresovatelnou paměť.

    Taková organizace má řadu výhod. Za prvé, při přístupu k datům neexistuje konkurence pro sběrnici ani přepínače – každý procesor dokáže plně využít šířku pásma komunikační cesty s vlastní lokální pamětí. Za druhé, absence společné sběrnice znamená, že neexistují žádná související omezení počtu procesorů: velikost systému je omezena pouze sítí, která kombinuje procesory. Za třetí je odstraněn problém koherence mezipaměti. Každý zpracovatel má právo nezávisle měnit svá Data, aniž by se staral o porovnávání kopií dat ve své vlastní lokální mezipaměti s mezipaměti jiných procesorů.

    Hlavní nevýhodou distribuované paměti CS je složitost výměny informací mezi procesory. Pokud jeden z procesorů potřebuje data z paměti jiného procesoru, musí si s tímto procesorem vyměňovat zprávy. To má za následek dva typy nákladů:

      vytvoření a předání zprávy od jednoho vyžaduje čas! procesor jinému;

      aby mohl reagovat na zprávy od jiných procesorů, musí přijímající procesor obdržet požadavek na přerušení a provést rutinu přerušení.

    Struktura systému s distribuovanou pamětí je na obr. 1. Obr. 11.4. Vlevo! díly (obr. 11.4, A) je zobrazen jeden procesní prvek (PE). Obsahuje) samotný procesor (P), lokální paměť (M) a dva vstupně/výstupní řadiče (Ko a CD Na pravé straně (obr. 11.4, b) je znázorněn čtyřprocesorový systém, který ilustruje, jak jsou zprávy odesílány z jednoho procesoru do druhého. Ve vztahu ke každému PE lze všechny ostatní prvky procesoru považovat jednoduše za vstupní/výstupní zařízení. Pro odeslání zprávy jinému PE vytvoří procesor ve své lokální paměti datový blok a upozorní místního řadiče na nutnost přenést informace na externí zařízení. Propojovací síť předá tuto zprávu přijímajícímu I/O řadiči přijímajícího PE. Ten najde místo pro zprávu ve své vlastní lokální paměti a oznámí zdrojovému procesoru, že zpráva byla přijata.

    Rýže. 11.4. Výpočetní systém s distribuovanou pamětí: a - procesorový prvek; b- kombinace procesorových prvků o

    Zajímavou variantou distribuovaného paměťového systému je; Modelka distribuovaná sdílená paměť(DSM, Distribute Shared Memory), také známý pod jiným názvem architektura s heterogennísoftware pro přístup k paměti a koherenci(SC-NUMA, Software-Coherent Non-Uniform Memory Architecture). Myšlenkou tohoto modelu je, že VS, který je fyzicky systémem s distribuovanou pamětí, je uživateli prezentován jako systém se sdílenou pamětí díky operačnímu systému. To znamená, že operační systém nabízí uživateli jediný adresní prostor, přestože skutečný přístup do paměti „cizího“ počítače VS stále zajišťuje výměna zpráv.

    Víceprocesorovýkoherence mezipaměti

    Víceprocesorový systém se sdílenou pamětí se skládá ze dvou nebo více nezávislých procesorů, z nichž každý vykonává buď část velkého programu, nebo nezávislý program. Všechny procesory přistupují k instrukcím a datům uloženým ve společné hlavní paměti. Vzhledem k tomu, že paměť je sdílený prostředek, dochází při přístupu k ní mezi procesory ke sporům, což má za následek zvýšení průměrné latence přístupu do paměti. Ke snížení této latence je každému procesoru přidělena místní mezipaměť, která tím, že obsluhuje přístupy k místní paměti, v mnoha případech zabraňuje nutnosti přístupu ke sdílené hlavní paměti. Vybavení každého procesoru lokální cache pamětí zase vede k tzv problém soudržnosti nebo poskytování podlemezipaměť. Podle , je systém koherentní, pokud každá operace čtení na jakoukoli adresu provedená kterýmkoli z procesorů vrátí hodnotu zadanou při poslední operaci zápisu na tuto adresu, bez ohledu na to, který z procesorů zapisoval jako poslední.

    V nejjednodušší podobě lze problém koherence mezipaměti vysvětlit následovně (obrázek 11.5). Nechte dva procesory R G a Rr jsou připojeny ke sdílené paměti přes sběrnici. Nejprve oba procesory přečtou proměnnou X. Kopie bloků obsahujících tuto proměnnou jsou přenášeny z hlavní paměti do lokálních cache obou procesorů (obr. 11.5, A). Dále procesor Pt provede operaci zvýšení hodnoty proměnné X za jednotku. Protože kopie proměnné je již v mezipaměti procesoru, dojde k zásahu do mezipaměti a hodnota se změní pouze v mezipaměti 1. Pokud procesor P 2 nyní znovu provede operaci čtení X, pak také dojde k zásahu do mezipaměti a P 2 získá „starou“ hodnotu uloženou ve své mezipaměti X(obr. 11.5, b).

    Zachování konzistence vyžaduje, aby při změně datového prvku jedním z procesorů byly provedeny odpovídající změny ve vyrovnávací paměti ostatních procesorů, kde je kopie změněného datového prvku, a také ve sdílené paměti. Podobný problém se mimochodem vyskytuje v jednoprocesorových systémech, kde je několik úrovní vyrovnávací paměti. Zde je potřeba koordinovat obsah keší různých úrovní.

    Existují dva přístupy k řešení problému koherence: software a hardware. Některé systémy používají strategie, které kombinují oba přístupy.

    Softwarová řešeníproblémy s koherencí

    Softwarové techniky pro řešení problému koherence vám umožní obejít se bez dalšího vybavení nebo jej snížit na minimum)