sv.phhsnews.com


sv.phhsnews.com / När är en CPU-cache spolad tillbaka till huvudminne?

När är en CPU-cache spolad tillbaka till huvudminne?


Om du just börjat lära dig hur flera kärnprocessorer, cache, cache-koherens och minne fungerar kan det verka lite lite förvirrande först. Med det i åtanke har dagens SuperUser Q & A-post svar på en nyfiken läsarens fråga.

Dagens Frågor och svar sessions kommer till vår tjänst med SuperUser-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.

Frågan

SuperUser-läsare CarmeloS vill veta när en CPU-cache spolas tillbaka till huvudminne:

Om jag har en CPU med två kärnor och varje kärna har sin egen L1-cache, är det möjligt att Core1 och Core2 både cachar samma del av minnet samtidigt? Om det är möjligt, vad kommer värdet av huvudminne att vara om både Core1 och Core2 har redigerat sina värden i cacheminnet?

När är en CPU-cache spolad tillbaka till huvudminnet?

Svaret

SuperUser-bidragsgivare David Schwartz, Sleske och Kimberly W har svaret för oss. Först upp, David Schwartz:

Om jag har en CPU med två kärnor och varje kärna har sin egen L1-cache, är det möjligt att Core1 och Core2 båda cachar samma del av minnet samtidigt?

Ja, prestanda skulle vara hemskt om det inte var fallet. Tänk på två trådar som kör samma kod. Du vill ha den koden i båda L1-cacherna.

Om det är möjligt, vad kommer värdet av huvudminne att vara om både Core1 och Core2 har redigerat sina värden i cacheminnet?

Det gamla värdet kommer i huvudminnet, vilket spelar ingen roll eftersom ingen kärna kommer att läsa den. Innan du matar ut ett modifierat värde från cacheminnet måste det skrivas till minnet. Vanligtvis används en viss variant av MESI-protokollet. I det traditionella genomförandet av MESI, om ett värde ändras i en cache, kan det inte alls finnas i någon annan cache på samma nivå.

Följd av svaret från sleske:

Ja, med två cacheminnor samma minnesregion kan hända och är faktiskt ett problem som uppstår mycket i praktiken. Det finns olika lösningar, till exempel:

  • De två cacherna kan kommunicera för att se till att de inte håller med varandra.
  • Du kan ha någon form av handledare som övervakar alla cacher och uppdaterar dem följaktligen.
  • Varje processor övervakar minnesområdena att det har cachat, och när det upptäcker en skriv, slänger den ut sin (nu ogiltiga) cache

Problemet kallas cachekoherens och Wikipedia-artikeln om ämnet har en fin översikt över problemet och möjliga lösningar.

Och vårt sista svar från Kimberly W:

För att svara på frågan i din inläggets titel beror det på vad cacheprotokollet är. Om det är återkoppling spolas cacheminnet bara tillbaka till huvudminnet när cachecontrollern inte har något annat val än att lägga ett nytt cacheblock i redan upptaget utrymme. Det block som tidigare rymde utrymmet tas bort och dess värde skrivs tillbaka till huvudminnet.

Det andra protokollet är genomskrivning. I så fall uppdateras klockblocket på nivå n , motsvarande block på nivå n + 1 . Det är liknande i koncept att fylla i en blankett med kolpapper under vad du skriver överst kopieras på arket nedan. Detta är långsammare eftersom det uppenbarligen innebär fler skrivoperationer, men värdena mellan cacher är mer konsekventa. I återkopplingsschemat skulle endast cachen med högsta nivå ha det mest aktuella värdet för ett visst minnesblock.


Har något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in den fullständiga diskussionsgängan här.

Bildkrediter: Lemsipmatt (Flickr)


Facebook skannar dina Messenger-konversationer och ibland människor läser dem

Facebook skannar dina Messenger-konversationer och ibland människor läser dem

Facebook-nyhetsflödet är offentligt och Messenger är privat ... rätt? Det är inte riktigt: Facebook skannar rutinmässigt dina Messenger-konversationer, och i vissa fall kan mänskliga anställda granska dem. Den nya först bröt i en Mark Zuckerberg-intervju av Ezra Klein, när Zuckerberg offhandedly nämnde att företaget granskade manipulerande Messenger-inlägg som sprider sig genom Myanmar .

(how-top)

Hur man använder Ember Media Manager för att organisera din mediesamling

Hur man använder Ember Media Manager för att organisera din mediesamling

Ett mediasenter är inte så kul om alla dina medier är missgynnade dåligt organiserade. Läs vidare för att lära dig hur du använder Ember Media Manager för att piska dina medier i form och göra din samling gnist. Varför behöver jag en mediehanterare? Kanske har du aldrig hört talas om en mediehanterare eller om du har du har skrivit det som något för de obsessiva typerna att tinker med.

(how-top)