Paměťová koherence
Paměťová koherence (anglicky cache coherence), resp. koherence vyrovnávajících pamětí (cache) znamená jednotnost dat ve více vyrovnávacích pamětích.
Problém udržení koherence vyvstává u multiprocesorových počítačů s více cachemi. Při změně dat ve vyrovnávací paměti jednoho procesoru je nutné zabránit tomu, aby ostatní procesory (využívající jiné cache) pracovaly se zastaralými daty. Docílit shodných dat na všech pamětech je však složité.
Metody zajištění koherence
Snooping
Broadcastové metody, tzv. snoopy cache, šíří informace o změně bloku po sběrnici. Všechny cache na změnu reagují buď zneplatněním daného bloku nebo okamžitou aktualizací dat.
Mezi snoopingové metody patří protokoly WTWNA nebo MESI.
Problémem snoopingu je špatná škálovatelnost.
Adresářové metody
Adresářové metody potřebují ke své funkci adresář. Každá žádost o načtení dat z hlavní paměti do cache musí jít právě přes adresář, který si udržuje informaci o tom, které bloky se v kterých vyrovnávacích pamětích nacházejí.
Stejně tak cache informují adresář o přepsání bloku. Adresář si poté najde v tabulce ty cache, ve kterých se daný blok nachází, a informuje je (data jsou v nich zneplatněna nebo rovnou aktualizována).
Existují tři základní schémata[1]:
- plně mapované adresáře,
- částečně mapované adresáře, kde je každému bloku dovolena být přítomen pouze v omezeném počtu cache,
- provázané adresáře, které obsahují řetěz odkazů na cache.
Odkazy
Reference
- CHAIKEN, David; FIELDS, Craig; KURIHARA, Kiyoshi, AGARWAL, Anant. Directory-Based Cache Coherence in Large-Scale Multiprocessors. In: Computer. Cambridge: Massachusetts Institute of Technology, 1990. Dostupné online. DOI 10.1109/2.55500. S. 49--58.