Write-through versus write-back: schrijfbeleid van caches vergeleken

Het schrijfbeleid bepaalt wat er gebeurt als de CPU naar data schrijft die in de cache staat. Een write-through-cache werkt de cache en het hoofdgeheugen tegelijk bij, zodat het geheugen altijd actueel is, maar elke schrijfactie geheugenverkeer veroorzaakt. Een write-back-cache werkt alleen de cache bij, markeert de regel als dirty en schrijft die later naar het geheugen als de regel wordt verwijderd. Write-back is sneller en gebruikt minder bandbreedte, maar het consistent houden is ingewikkelder.

KenmerkWrite-throughWrite-back
SchrijfmethodeElke schrijfactie gaat naar zowel de cache als het volgende geheugenniveauEen schrijfactie werkt alleen de cache bij en zet de dirty-bit. Het geheugen wordt bij verwijdering bijgewerkt
GeheugenverkeerVeel. Elke schrijfactie gaat naar buitenWeinig. Herhaalde schrijfacties naar dezelfde regel worden samengevoegd tot één write-back
SchrijfsnelheidZonder maatregelen langzaam. Een write buffer verbergt het grootste deel van de vertragingSnel. Schrijven is klaar op cachesnelheid
Consistentie met het geheugenHet geheugen is altijd actueel, dus delen met DMA of andere cores is eenvoudigHet geheugen kan verouderd zijn tot de regel is teruggeschreven, dus meer zorg voor coherentie is nodig
ComplexiteitEenvoudigComplex. Dirty-bits, write-back bij verwijdering, coherentieprotocollen
Kosten van verwijderingLaag. Er is niets om te schrijvenHet verwijderen van een dirty regel kost één extra schrijfactie naar het geheugen
Beleid bij schrijfmissMeestal no-write-allocateMeestal write-allocate
Belangrijkste toepassingenSommige L1-caches, eenvoudige systemen en systemen waar betrouwbaarheid voorgaatDe caches van de meeste moderne CPU's, vooral L2 en L3

De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.

Wanneer welke variant?

Write-through
Wanneer eenvoud en een altijd actueel geheugen belangrijker zijn dan schrijfbandbreedte.
Write-back
Wanneer prestaties tellen. Het effect is het grootst bij code die herhaaldelijk naar dezelfde regel schrijft.

Veelgestelde vragen

Wat is een dirty-bit?

Een bit per regel in een write-back-cache dat aangeeft dat de regel is gewijzigd. Een dirty regel moet bij verwijdering naar het geheugen worden teruggeschreven.

Waarom is write-back sneller?

Herhaalde schrijfacties naar dezelfde regel blijven in de cache en worden samengevoegd tot één schrijfactie naar het geheugen, waardoor het geheugenverkeer afneemt.

Wat doet een write buffer?

Bij een write-through-cache zet die schrijfacties naar het geheugen in een wachtrij, zodat de processor niet op de voltooiing hoeft te wachten.

Wat is eenvoudiger bij meerdere cores?

Write-through, omdat het geheugen altijd actueel is. Write-back vraagt meer zorg, zoals een coherentieprotocol, omdat het geheugen verouderd kan zijn.

Test uw begrip

Welke uitspraak over de schrijfmethode write-back van een cache is juist?

  1. AEr wordt niet naar de cache geschreven en alleen het hoofdgeheugen wordt bijgewerkt
  2. BBij elke schrijfbewerking worden altijd zowel de cache als het hoofdgeheugen bijgewerkt
  3. CEerst wordt alleen de cache bijgewerkt en de gegevens worden naar het hoofdgeheugen teruggeschreven wanneer ze uit de cache worden verdrongen
Antwoord en toelichting tonen

Antwoord: C. Eerst wordt alleen de cache bijgewerkt en de gegevens worden naar het hoofdgeheugen teruggeschreven wanneer ze uit de cache worden verdrongen

Bij write-back wordt alleen naar de cache geschreven, en wanneer een bijgewerkte (dirty) regel wordt verdrongen, wordt die in één keer naar het hoofdgeheugen teruggeschreven. Omdat meerdere schrijfbewerkingen naar dezelfde plaats met één terugschrijving kunnen worden afgehandeld, neemt het verkeer naar het hoofdgeheugen sterk af; het wordt gebruikt in L1 tot L3 van veel CPU's. De keerzijde is dat de inhoud van hoofdgeheugen en cache tijdelijk verschilt, zodat coherentie en consistentie met DMA moeten worden beheerd.

Wat is het belangrijkste doel van een schrijfbuffer bij een write-through cache?

  1. ADe CPU laten doorgaan met de volgende bewerking zonder te wachten tot het schrijven naar het hoofdgeheugen is voltooid
  2. BDe data in de cache nieuwer houden dan die in het hoofdgeheugen
  3. CErvoor zorgen dat een regel waarop een schrijfmiss optreedt altijd eerst uit het hoofdgeheugen in de cache wordt gelezen voordat erin wordt geschreven
Antwoord en toelichting tonen

Antwoord: A. De CPU laten doorgaan met de volgende bewerking zonder te wachten tot het schrijven naar het hoofdgeheugen is voltooid

Bij write-through wordt bij elke schrijfactie ook naar het hoofdgeheugen geschreven; als op de voltooiing wordt gewacht, komt de CPU geregeld stil te staan. Als schrijfacties tijdelijk in een schrijfbuffer worden opgeslagen, kan de CPU direct met de volgende instructie verdergaan, terwijl de buffer ze op de achtergrond naar het hoofdgeheugen schrijft. De cache nieuwer houden dan het hoofdgeheugen is een eigenschap van write-back; bij write-through zijn beide juist gelijk. Of een gemiste regel wordt ingelezen is de keuze tussen write-allocate en no-write-allocate en staat los van de schrijfbuffer.

Wat is de juiste rol van de dirty bit die bij elke regel van een write-back cache hoort?

  1. AAangeven of de data van de regel geldig is en gelezen kan worden
  2. BAangeven dat de regel is gewijzigd en dat de inhoud afwijkt van het hoofdgeheugen
  3. CAangeven op welk tijdstip de regel voor het laatst is benaderd
Antwoord en toelichting tonen

Antwoord: B. Aangeven dat de regel is gewijzigd en dat de inhoud afwijkt van het hoofdgeheugen

Bij write-back worden schrijfacties alleen in de cache uitgevoerd, waardoor regels kunnen ontstaan waarvan de inhoud in het hoofdgeheugen verouderd is. De dirty bit geeft aan dat de regel is gewijzigd, zodat bij verdringing alleen dirty regels naar het hoofdgeheugen hoeven te worden teruggeschreven. Ongewijzigde regels worden eenvoudig weggegooid, wat onnodig schrijven beperkt. Of een regel geldig is wordt aangegeven door de valid bit; de volgorde van toegang wordt beheerd met vervangingsinformatie zoals LRU.

  1. Wat is de belangrijkste reden dat write-back voordeliger is dan write-through bij het herhaaldelijk schrijven naar dezelfde regel?

Oefenvragen over Geheugenhiërarchie en prestaties

Belangrijke termen uitgelegd

Write-through
Methode waarbij tegelijk met het schrijven naar de cache ook naar het onderliggende niveau (zoals het hoofdgeheugen) wordt geschreven. Het onderliggende niveau blijft altijd actueel, maar er is veel schrijfverkeer, dus wordt het met een schrijfbuffer gecombineerd.
Cachegeheugen
Snel geheugen met kleine capaciteit dicht bij de CPU. Het bewaart veelgebruikte gegevens en overbrugt het snelheidsverschil met het hoofdgeheugen. Wordt meestal met SRAM gemaakt.
Cachecoherentie
Mechanisme dat in een multicore-CPU de consistentie bewaart wanneer de caches van meerdere cores data van hetzelfde adres bevatten. Wordt gerealiseerd door bijvoorbeeld verouderde kopieën in andere cores ongeldig te maken zodra een core schrijft.
Cacheregel (cache line)
Eenheid waarin data tussen de cache en het onderliggende niveau worden gelezen en geschreven. Ook cacheblok genoemd. Bij veel CPU's 64 byte, waarbij de laagste adresbits de positie (offset) binnen de regel aangeven.

Verwante vergelijkingen