20Aug

Vai CPU kešatmiņa tiek izlaista atpakaļ uz galveno atmiņu?

Ja jūs tikko sākat uzzināt, kā strādā daudzkodolu procesori, kešdarbe, kešatmiņas saderība un atmiņa, vispirms tas var šķist mazliet mulsinošs. Paturot to prātā, šodienas SuperUser Q & amai ir atbildes uz interesantu lasītāja jautājumu.

šodienas jautājums &Atbildes sesija mums priecājas par SuperUser - Stack Exchange, kas ir kopienas un Q & A tīmekļa vietņu grupa.

Jautājums

SuperUser lasītājs CarmeloS vēlas uzzināt, kad CPU kešatmiņa tiek izskalota atpakaļ uz galveno atmiņu:

Ja man ir centrālais procesors ar diviem serdeņiem un katram kodolam ir sava L1 kešatmiņa, vai ir iespējams, ka Core1 un Core2 abi cachedaļa atmiņas tajā pašā laikā?Ja tas ir iespējams, kāda būs galvenās atmiņas vērtība, ja gan Core1, gan Core2 ir rediģējuši savas vērtības kešatmiņā?

Kad ir CPU kešatmiņa, kas tiek izmesta atpakaļ galvenajā atmiņā?

Atbildes

SuperUser atbalstītāji David Schwartz, sleske un Kimberly W ir atbildes par mums. Pirmais solis, David Schwartz:

Ja man ir centrālais procesors ar diviem kodoliem, un katram kodolam ir sava L1 kešatmiņa, vai ir iespējams, ka Core1 un Core2 vienā un tajā pašā laikā saglabā vienu un to pašu atmiņas daļu?

Jā, sniegums būtu briesmīgs, ja tas tā nebūtu. Apsveriet divus tēmas, kas darbojas ar vienu un to pašu kodu. Jūs vēlaties šo kodu abos L1 kešatmiņā.

Ja tas ir iespējams, kāda būs galvenās atmiņas vērtība, ja gan Core1, gan Core2 ir rediģējuši savas vērtības kešatmiņā?

Vecā vērtība atradīsies galvenajā atmiņā, un tas nebūs svarīgs, jo neviens no kodiem to neizlasīs. Pirms modificētās vērtības izņemšanas no kešatmiņas, tā jāraksta atmiņā.Parasti tiek izmantots kāds MESI protokola variants. Tradicionālā MESI ieviešanā, ja vērtība tiek mainīta vienā kešatmiņā, tajā pašā līmenī tā vairs nevar būt nevienā citā kešatmiņā.

Seko atbilde no sleske:

Jā, ar diviem kešatmiņām kešatmiņā var notikt viena un tā pati atmiņas reģions, un tā patiešām ir problēma, kas praktiski rodas daudz. Ir dažādi risinājumi, piemēram:

  • . Divi kešatmiņas var sazināties, lai pārliecinātos, ka tie nepiekrīt
  • . Jums var būt sava veida supervizors, kas uzrauga visus kešatmiņas un attiecīgi tos atjaunina.
  • Katrs procesors uzrauga atmiņas apgabalus, kas ir saglabāti kešatmiņā, unkad tas konstatē rakstīšanu, tas izmež tā( tagad spēkā neesošu) kešatmiņu

Problēma sauc par kešatmiņu un Vikipēdijas raksts par tēmu ir jauks pārskats par problēmu un iespējamiem risinājumiem.

Un mūsu galīgā atbilde no Kimberly W:

Lai atbildētu uz jautājumu jūsu ziņas virsrakstā, tas ir atkarīgs no tā, kāds ir kešdarbības protokols. Ja tas ir norakstīšanas atpakaļ, kešatmiņu varēs izskalot tikai atpakaļ galvenajā atmiņā, ja kešatmiņas kontrolierim nav citas izvēles kā novietot jaunu kešatmiņu bloku jau aizņemtajā vietā.Bloks, kas iepriekš aizņēma telpu, tiek noņemts, un tā vērtība tiek ierakstīta atpakaļ galvenajā atmiņā.

Otrais protokols ir rakstīšanas process. Tādā gadījumā ikreiz, kad kešatmiņas bloks ir ierakstīts līmenī n , attiecīgais bloks n + 1 tiek atjaunināts. Jēdziens ir līdzīgs, aizpildot veidlapu ar koppapīru zem tā;Viss, ko rakstāt augšā, tiek kopēts zemāk esošajā lapā.Tas ir lēnāks, jo tas neapšaubāmi ietver vairāk rakstīšanas operāciju, bet vērtības starp kešatmiņām ir daudz konsekventākas. Atpirkšanas shēmā tikai visaugstākā līmeņa kešatmiņai būtu visizcilākā vērtība konkrētā atmiņas blokā.

Vai kaut kas jāpievieno paskaidrojumam? Skatieties komentāros. Vēlaties lasīt citas atbildes no citiem tehnoloģiju savvy Stack Exchange lietotājiem?Šeit skatiet pilnu diskusiju pavedienu.

attēla kredīts: Lemsipmatt( Flickr)