MOESI

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 20. února 2016; kontroly vyžadují 2 úpravy .

MOESI je protokol pro podporu koherence mezipaměti mikroprocesoru, který zahrnuje všechny možné stavy používané v jiných protokolech. Kromě stavů běžně používaného protokolu MESI byl přidán pátý stav „Owned“, což znamená, že data jsou jak modifikována, tak sdílena ( modified and shared ). Vyhne se tak nutnosti zapisovat upravená data zpět do hlavní paměti dříve, než je ostatní procesory v systému mohou přečíst. Data je stále potřeba zapisovat do paměti, ale s tímto protokolem může být tento zpětný zápis zpožděn.

Používají mikroprocesory AMD Opteron.

Podle AMD64 Architecture Programmer's Manual Vol 2 'System Programming' [1] je každý řádek mezipaměti v jednom z pěti stavů:

Upraveno Řádek mezipaměti v upraveném stavu obsahuje nejnovější, správná data. Kopie dat v hlavní paměti je zastaralá a neplatná a žádný jiný procesor nemá kopii dat. Data v řádku mezipaměti lze znovu upravit bez jakýchkoli požadavků nebo změn stavu. Stav se může změnit na Exclusive , když jsou změněná data zapsána do hlavní paměti. Majitel Řádek mezipaměti ve vlastněném stavu obsahuje nejnovější správná data. Stav Owned je podobný stavu Shared v tom, že ostatní procesory mohou mít kopii nejaktuálnějších a správných dat. Na rozdíl od stavu Shared však může být kopie v hlavní paměti zastaralá a nesprávná. Pouze jeden z procesorů může mít tento řádek mezipaměti ve stavu Owned , všechny ostatní procesory mohou mít tato data pouze ve stavu Shared . Řádek mezipaměti se může přepnout do stavu Modified poté, co je odstraněna aktuálnost (vynucený přechod do stavu Invalid ) všech sdílených kopií v jiných procesorech, nebo do stavu Shared , když jsou upravená data zapsána do hlavní paměti. Výhradní Řádek mezipaměti ve výhradním stavu obsahuje nejnovější správná data. Kopie v hlavní paměti také obsahuje nejnovější, správnou kopii dat. Žádný jiný procesor nemá kopii dat ve své mezipaměti. Stav se může kdykoli změnit na Upraveno a upravit tak obsah tohoto řádku mezipaměti. Stav se také může kdykoli změnit na Neplatný . Sdíleno Řádek mezipaměti ve sdíleném stavu obsahuje nejnovější správná data. Ostatní procesory v systému mohou mít kopie dat ve sdíleném stavu. Kopie v hlavní paměti také obsahuje nejnovější, správnou kopii dat, pokud žádný jiný procesor nemá tuto linku mezipaměti ve vlastněném stavu. Zápis do tohoto řádku mezipaměti je zakázán a vyžaduje, aby byl nastaven do výhradního stavu, zatímco všechny ostatní sdílené kopie jsou nastaveny na stav Neplatný . Stav se také může kdykoli změnit na Neplatný . Nerelevantní (Neplatné) Řádek sdílené mezipaměti neobsahuje platná data. Správné kopie dat mohou být buď v hlavní paměti, nebo v mezipaměti jiného procesoru.

Pro libovolnou dvojici keší jsou povoleny následující stavy dané linky mezipaměti:

 M   Ó   E   S   já 
 M  ❌N ❌N ❌N ❌N zelená ✓Y
 Ó  ❌N ❌N ❌N zelená ✓Y zelená ✓Y
 E  ❌N ❌N ❌N ❌N zelená ✓Y
 S  ❌N zelená ✓Y ❌N zelená ✓Y zelená ✓Y
 já  zelená ✓Y zelená ✓Y zelená ✓Y zelená ✓Y zelená ✓Y

Tento protokol, který je komplikací jednoduššího protokolu MESI , se vyhýbá nutnosti zapisovat změny řádků mezipaměti do hlavní paměti, aby je mohl číst jiný procesor. Stav Owned umožňuje procesoru přenášet upravená data přímo jinému procesoru.

Pokud chce procesor zapisovat do řádku Owned cache, musí upozornit ostatní procesory, které sdílejí tento řádek cache. V závislosti na implementaci je možné buď požádat o změnu všech sdílených kopií do stavu Invalid (a uvést jejich kopii do upraveného stavu), nebo požádat o aktualizaci jejich kopií o nová data (vlastní kopie zůstává ve stavu Vlastněno) .

Viz také

Poznámky

  1. AMD64 Architecture Programmer's Manual Vol 2 'System Programming' . Získáno 29. listopadu 2010. Archivováno z originálu 11. října 2011.