20Aug

Kedy je pamäť cache procesora vyplavená späť do hlavnej pamäte?

Ak sa práve začínate naučiť, ako fungujú viacjadrové procesory, ukladanie do vyrovnávacej pamäte, koherencia vyrovnávacej pamäte a pamäť, môže sa to na prvý pohľad zdať trochu nejasné.S ohľadom na to má dnešný príspevok SuperUser Q & A odpovede na otázku zvedavého čitateľa.

dnešná otázka &Odpoveď na zasadnutie nám príde s láskavým dovolením SuperUser - subdivíziu Stack Exchange, komunitne riadeného zoskupenia webových stránok Q & A.

Otázka

čítačka SuperUser CarmeloS chce vedieť, kedy je cache CPU prepláchnutá späť do hlavnej pamäte:

Ak mám CPU s dvoma jadrami a každé jadro má vlastnú L1 cache, je možné, že Core1 a Core2 oba cache rovnakočasť pamäte súčasne? Ak je to možné, akú hodnotu bude mať hlavná pamäť, ak Core1 a Core2 upravia svoje hodnoty v cache?

Kedy je cache CPU prepláchnutá späť do hlavnej pamäte?

Odpovedia na odpovede

SuperUser David Schwartz, sleske a Kimberly W nám odpovedali. Prvýkrát, David Schwartz:

Ak mám CPU s dvoma jadrami a každé jadro má vlastnú vyrovnávaciu pamäť L1, je možné, že Core1 a Core2 súčasne vyrovnávajú rovnakú časť pamäte?

Áno, výkon by bol strašný, ak by tomu tak nebolo. Zvážte dva vlákna s rovnakým kódom. Chcete kód v oboch L1 cache.

Ak je to možné, akú hodnotu bude mať hlavná pamäť, ak Core1 a Core2 upravia svoje hodnoty v cache?

Stará hodnota bude v hlavnej pamäti, ktorá nezáleží na tom, že ju nebude čítať ani jadro. Pred vysunutím upravenej hodnoty z vyrovnávacej pamäte musí byť zapísaná do pamäte. Obvykle sa používa niektorý variant protokolu MESI.V tradičnej implementácii MESI, ak je hodnota upravená v jednej vyrovnávacej pamäti, nemôže byť vôbec prítomná v žiadnej inej vyrovnávacej pamäti na tej istej úrovni.

Nasledujúca odpoveď od sleske:

Áno, s dvoma vyrovnávacou pamäťou vyrovnávacej pamäte sa môže stať tá istá pamäťová oblasť a je to vlastne problém, ktorý sa veľa vyskytuje v praxi. Existujú rôzne riešenia, napríklad:

  • Dve vyrovnávacie pamäte môžu komunikovať, aby sa uistili, že nesúhlasia
  • Môžete mať nejaký supervízor, ktorý monitoruje všetky vyrovnávacie pamäte a aktualizuje ich podľa toho
  • Každý procesor sleduje pamäťové oblasti, ktoré má uložené do vyrovnávacej pamäte akeď detekuje zápis, vyhodí svoju( teraz neplatnú) vyrovnávaciu pamäť

Problém sa nazýva koherencia vyrovnávacej pamäte a článok Wikipédie na tému obsahuje pekný prehľad problému a možné riešenia.

A naša konečná odpoveď od Kimberly W:

Ak chcete odpovedať na otázku v názve vášho príspevku, záleží na tom, čo je protokol caching. Ak je spätný zápis, vyrovnávacia pamäť sa vráti späť do hlavnej pamäte iba vtedy, keď má regulátor vyrovnávacej pamäte inú možnosť než vložiť nový blok vyrovnávacej pamäte do už obsadeného priestoru. Blok, ktorý predtým obsadil priestor, je odstránený a jeho hodnota sa zapíše do hlavnej pamäte.

Druhý protokol je zápis. V takom prípade kedykoľvek je pamäť vyrovnávacej pamäte zapísaná na úrovni n , aktualizuje sa príslušný blok na úrovni n + 1 .V koncepcii je podobná vyplňovanie formulára s podtlakovým papierom;všetko, čo napíšete na vrchu, sa skopíruje na hárku nižšie. To je pomalšia, pretože samozrejme zahŕňa viac operácií písania, ale hodnoty medzi vyrovnávacou pamäťou sú konzistentnejšie. V schéme spätného zápisu by mala mať najaktuálnejšia hodnota pre konkrétny blok pamäte len tá najvyššia úroveň vyrovnávacej pamäte.

Máte niečo doplniť vysvetlenie? Znížte komentáre. Chcete si prečítať viac odpovedí od iných používateľov technológie Stack Exchange? Pozrite sa na celý diskusný príspevok tu.

Image Credit: Lemsipmatt( Flickr)