20Aug

Kdy je mezipaměť procesoru vyplavena zpět do hlavní paměti?

click fraud protection

Pokud se právě začínáte naučit, jak pracují vícejádrové CPU, ukládání do mezipaměti, koherence mezipaměti a paměti, může se na první pohled zdát trochu zmatené.S ohledem na to má dnešní příspěvek SuperUser Q & A odpovědi na otázku zvědavé čtenáře.

dnešní otázka &Odpověď na zasedání se k nám dostala s laskavým svolením SuperUser - podřízenou výměnou Stack Exchange, skupině webů Q & A založených na komunitě.

Otázka

Reader SuperUser CarmeloS chce vědět, kdy je mezipaměť procesoru vrácena zpět do hlavní paměti:

Pokud mám procesor se dvěma jádry a každé jádro má vlastní L1 cache, je možné, že Core1 a Core2 oba cache stejnéčást paměti současně?Pokud je to možné, jaká bude hodnota hlavní paměti, pokud Core1 a Core2 upraví své hodnoty v mezipaměti?

Kdy je mezipaměť CPU spuštěna zpět do hlavní paměti?

Respondenti

SuperUser odpovědí David Schwartz, sleske a Kimberly W mají odpověď.První, David Schwartz:

Pokud mám CPU s dvěma jádry a každé jádro má vlastní L1 cache, je možné, že Core1 a Core2 oba cache stejnou část paměti současně?

instagram viewer

Ano, výkon by byl strašný, kdyby tomu tak nebylo. Zvažte dva podprocesy se stejným kódem. Chcete kód v obou mezipaměti L1.

Pokud je to možné, jaká bude hodnota hlavní paměti, pokud Core1 a Core2 upraví své hodnoty v mezipaměti?

Stará hodnota bude v hlavní paměti, na které nezáleží, jelikož jádro ji nebude číst. Před vysunutím upravené hodnoty z mezipaměti musí být zapsána do paměti. Obvykle se používá některá varianta protokolu MESI.V tradiční implementaci MESI, pokud je hodnota změněna v jedné mezipaměti, nemůže být vůbec přítomna v žádné jiné mezipaměti na stejné úrovni.

Následující odpověď sleske:

Ano, s dvěma mezipaměti mezipaměti může dojít ke stejné oblasti paměti a je to vlastně problém, který se v praxi vyskytuje hodně.Existují různá řešení, například:

  • Obě cache mohou komunikovat, aby se ujistily, že nesouhlasí.
  • Můžete mít nějakého supervizora, který sleduje všechny mezipaměti a aktualizuje je odpovídajícím způsobem.
  • Každý procesor sleduje paměťové oblasti, které má v mezipaměti akdyž detekuje zápis, vyhoří svou( nyní neplatnou) mezipaměť

Problém se nazývá koherence mezipaměti a článek Wikipedie o tématu má pěkný přehled problému a možných řešení.

A naše konečná odpověď od Kimberly W:

Chcete-li odpovědět na otázku v názvu vašeho příspěvku, záleží na tom, co je protokol ukládání do mezipaměti. Pokud se jedná o zpětný zápis, mezipaměť bude vrácena zpět do hlavní paměti pouze tehdy, když má správce mezipaměti jinou možnost než vložení nového mezipaměti do již obsazeného prostoru. Blok, který dříve obsadil prostor, je odebrán a jeho hodnota je zapsána zpět do hlavní paměti.

Druhý protokol je zápis. V takovém případě kdykoli je mezipaměť zapsána na úrovni n , aktualizuje se odpovídající blok na úrovni n + 1 .V konceptu je podobná vyplňování formuláře s podtlakovým papírem;vše, co píšete nahoře, je zkopírováno na list níže. To je pomalejší, protože samozřejmě zahrnuje více operací psaní, ale hodnoty mezi mezipaměti jsou konzistentnější.V schématu zápisu zpětné vazby by měla nejaktuálnější mezní hodnota pro určitý paměťový blok pouze mezipaměť nejvyšší úrovně.

Musíte něco přidat k vysvětlení?Zní to v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde. Obrázek

: Lemsipmatt( Flickr)