nl.phhsnews.com


nl.phhsnews.com / Wanneer wordt de CPU-cache teruggespoeld naar het hoofdgeheugen?

Wanneer wordt de CPU-cache teruggespoeld naar het hoofdgeheugen?


Als u net begint te leren hoe multi-core CPU's, caching, cache-coherentie en geheugen werken, lijkt het misschien een beetje beetje verwarrend in het begin. Met dat in gedachten heeft het SuperUser Q & A-bericht van vandaag antwoorden op de vraag van een nieuwsgierige lezer.

De Question & Answer-sessie van vandaag komt tot ons dankzij SuperUser - een onderdeel van Stack Exchange, een community-driven groep van Q & A-websites.

De vraag

SuperUser-lezer CarmeloS wil weten wanneer de cache van een CPU wordt teruggespoeld naar het hoofdgeheugen:

Als ik een CPU heb met twee kernen en elke kern heeft zijn eigen L1-cache, is het dan mogelijk dat Core1 en Core2 cachen beide hetzelfde deel van het geheugen op hetzelfde moment in? Als het mogelijk is, wat zal de waarde van het hoofdgeheugen zijn als zowel Core1 als Core2 hun waarden in de cache hebben bewerkt?

Wanneer wordt de cache van een CPU teruggespoeld naar het hoofdgeheugen?

Het antwoord

SuperUser-bijdragers David Schwartz, Sleske en Kimberly W hebben het antwoord voor ons. Als eerste, David Schwartz:

Als ik een CPU met twee kernen heb en elke kern heeft zijn eigen L1-cache, is het dan mogelijk dat Core1 en Core2 allebei hetzelfde geheugen delen op hetzelfde moment?

Ja, de prestaties zouden vreselijk zijn als dit niet het geval was. Overweeg twee threads met dezelfde code. U wilt die code in beide L1-caches.

Als dat mogelijk is, wat is dan de waarde van het hoofdgeheugen als zowel Core1 als Core2 hun waarden in de cache hebben bewerkt?

De oude waarde bevindt zich in het hoofdgeheugen, die zal er niet toe doen, omdat geen van beide de kern zal lezen. Voordat een gewijzigde waarde uit de cache wordt verwijderd, moet deze in het geheugen worden geschreven. Meestal wordt een variant van het MESI-protocol gebruikt. Als een waarde in de traditionele implementatie van MESI in één cache wordt gewijzigd, kan deze helemaal niet in een andere cache op hetzelfde niveau aanwezig zijn.

Gevolgd door het antwoord van sleske:

Ja, met twee caches in cache hetzelfde geheugengebied kan voorkomen en is eigenlijk een probleem dat in de praktijk veel voorkomt. Er zijn verschillende oplossingen, bijvoorbeeld:

  • De twee caches kunnen communiceren om zeker te zijn dat ze niet oneens zijn
  • U kunt een soort supervisor hebben die alle caches bewaakt en deze overeenkomstig bijwerkt
  • Elke processor controleert de geheugengebieden dat het in de cache is geplaatst en wanneer het een schrijfactie detecteert, werpt het zijn (nu ongeldige) cache weg

Het probleem wordt cache-coherentie genoemd en het Wikipedia-artikel over het onderwerp heeft een aardig overzicht van het probleem en mogelijke oplossingen.

En ons laatste antwoord van Kimberly W:

Om de vraag in de titel van uw bericht te beantwoorden, hangt het ervan af wat het caching-protocol is. Als het terugschrijven is, wordt de cache alleen teruggespoeld naar het hoofdgeheugen als de cache-controller geen andere keus heeft dan een nieuw cache-blok in de reeds bezette ruimte te plaatsen. Het blok dat eerder de ruimte in beslag nam, wordt verwijderd en de waarde ervan wordt teruggeschreven naar het hoofdgeheugen.

Het andere protocol is een doorschrijfprocedure. In dat geval wordt het overeenkomstige blok op niveau n + 1 bijgewerkt telkens wanneer het cacheblok op niveau n wordt geschreven. Het is vergelijkbaar in concept met het invullen van een formulier met carbonpapier eronder; wat je daar bovenop schrijft, wordt gekopieerd op het onderstaande blad. Dit is trager omdat het uiteraard meer schrijfbewerkingen betreft, maar de waarden tussen caches zijn meer consistent. In het terugschrijvingsschema zou alleen de cache op het hoogste niveau de meest actuele waarde hebben voor een bepaald geheugenblok.


Heeft u iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk hier de volledige discussiethread.

Image Credit: Lemsipmatt (Flickr)


Skype is kwetsbaar voor een vervelende exploitatie: overschakelen naar de Windows Store-versie

Skype is kwetsbaar voor een vervelende exploitatie: overschakelen naar de Windows Store-versie

Als de desktopversie van Skype zich op uw Windows-computer bevindt, bent u kwetsbaar voor een echt lastige exploitatie. Een fout in de updatetool van Skype kan aanvallers volledige controle over uw systeem geven en Microsoft zegt dat er binnenkort geen oplossing zal zijn. Gelukkig kunt u het probleem volledig voorkomen door de "desktop" -versie van Skype met degene die beschikbaar is in de Microsoft Store.

(how-top)

Hoe u uw Amazon-echo overal kunt bedienen via uw telefoon

Hoe u uw Amazon-echo overal kunt bedienen via uw telefoon

Als uw Amazon Echo u niet vanuit de andere kamer kan horen of als u hem gewoon wilt bedienen wanneer u weg bent helemaal thuis, kunt u dit doen met de Amazon-app (op iOS) of de Alexa-app (op Android). GERELATEERD: Heb ik een Amazon-echo nodig om Alexa te gebruiken? The Echo's far- spraakherkenningstechnologie in het veld is een van de meest gewilde functies van het apparaat.

(how-top)

Interessante Artikelen