Koherence mezipaměti je vlastnost mezipaměti , což znamená integritu dat uložených v místních mezipaměti pro sdílený prostředek. Koherence mezipaměti je speciální případ koherence paměti .
Když procesy v systému používají mezipaměť pro sdílené prostředky, jako je paměť, mohou nastat problémy s nekonzistencí dat. To platí zejména pro procesory ve víceprocesorovém systému . Koherence mezipaměti je navržena tak, aby zvládala takové konflikty udržováním konzistence dat napříč různými mezipamětmi.
Koherence definuje chování čtení a zápisu do stejného paměťového místa. Mezipaměť se nazývá koherentní, pokud jsou splněny následující podmínky [1] :
Za těchto podmínek se operace čtení a zápisu považují za okamžité. To se však v praxi neděje kvůli zpoždění paměti a dalším architektonickým prvkům. Změny provedené procesorem nemusí být pro procesor viditelné, pokud ke čtení dojde velmi krátce po zápisu. Model konzistence paměti určuje, kdy bude zapsaná hodnota viditelná při čtení z jiného vlákna.
Tři hlavní mechanismy pro zajištění koherence mezipaměti jsou použití adresáře ( directory ), sledování ( snooping ) a zachycení ( snarfing ).
Při použití adresáře jsou informace o stavu bloku fyzické paměti obsaženy pouze na jednom místě, které se nazývá adresář (v tomto případě může být adresář fyzicky distribuován mezi systémové uzly).
V mechanismu sledování má každá mezipaměť, která obsahuje kopii dat nějakého bloku fyzické paměti, také odpovídající kopii servisní informace o jejím stavu. Neexistuje žádný centralizovaný evidenční systém. Mezipaměti jsou obvykle umístěny na sdílené (sdílené) sběrnici a řadiče všech mezipamětí sledují (prohlížejí) sběrnici, aby určily, zda obsahují kopii odpovídajícího bloku.
Při použití odposlechu, kdy jsou data z libovolné jedné mezipaměti zapsána do RAM, dostanou řadiče ostatních signál o této změně („zachytí“ informaci o změně dat) a v případě potřeby změní odpovídající data ve svých mezipaměti.
Systémy distribuované sdílené paměti používají podobné mechanismy k udržení konzistence mezi bloky paměti ve volně propojených systémech.
Koherenční protokoly jsou zodpovědné za udržování správnosti dat mezi všemi mezipaměti v systému distribuované sdílené paměti. Protokol zachovává koherenci paměti podle zvoleného koherenčního modelu . Většina hardwarových protokolů v procesorech (včetně těch, které poskytují cache-koherentní nejednotný přístup k paměti ) odpovídá sekvenčnímu modelu konzistence a softwarové protokoly v softwarových distribuovaných paměťových systémech častěji implementují modely výstupní konzistence ( anglicky release konzistence ) nebo slabé konzistence ( anglicky slabá konzistence ).
Hlavní modely a protokoly pro podporu koherence mezipaměti jsou: