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.
| Kenmerk | Write-through | Write-back |
|---|---|---|
| Schrijfmethode | Elke schrijfactie gaat naar zowel de cache als het volgende geheugenniveau | Een schrijfactie werkt alleen de cache bij en zet de dirty-bit. Het geheugen wordt bij verwijdering bijgewerkt |
| Geheugenverkeer | Veel. Elke schrijfactie gaat naar buiten | Weinig. Herhaalde schrijfacties naar dezelfde regel worden samengevoegd tot één write-back |
| Schrijfsnelheid | Zonder maatregelen langzaam. Een write buffer verbergt het grootste deel van de vertraging | Snel. Schrijven is klaar op cachesnelheid |
| Consistentie met het geheugen | Het geheugen is altijd actueel, dus delen met DMA of andere cores is eenvoudig | Het geheugen kan verouderd zijn tot de regel is teruggeschreven, dus meer zorg voor coherentie is nodig |
| Complexiteit | Eenvoudig | Complex. Dirty-bits, write-back bij verwijdering, coherentieprotocollen |
| Kosten van verwijdering | Laag. Er is niets om te schrijven | Het verwijderen van een dirty regel kost één extra schrijfactie naar het geheugen |
| Beleid bij schrijfmiss | Meestal no-write-allocate | Meestal write-allocate |
| Belangrijkste toepassingen | Sommige L1-caches, eenvoudige systemen en systemen waar betrouwbaarheid voorgaat | De caches van de meeste moderne CPU's, vooral L2 en L3 |
De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.