Cache write-through vs write-back : les différences expliquées
Une politique d'écriture détermine ce qui se passe lorsque le CPU écrit une donnée présente dans le cache. Un cache write-through met à jour le cache et la mémoire principale en même temps : la mémoire est toujours à jour, mais chaque écriture génère du trafic mémoire. Un cache write-back ne met à jour que le cache, marque la ligne comme modifiée (dirty) et l'écrit en mémoire plus tard, lorsque la ligne est évincée. Le write-back est plus rapide et consomme moins de bande passante, mais la cohérence est plus complexe à maintenir.
| Critère | Write-through | Write-back |
|---|---|---|
| Politique d'écriture | Chaque écriture va à la fois dans le cache et dans le niveau de mémoire suivant | Une écriture ne met à jour que le cache et positionne le dirty bit ; la mémoire est mise à jour lors de l'éviction |
| Trafic mémoire | Élevé : chaque écriture sort du cache | Plus faible : les écritures répétées sur une même ligne sont regroupées en une seule réécriture |
| Vitesse d'écriture | Plus lente sans aide ; un tampon d'écriture masque une grande partie du délai | Plus rapide : les écritures s'effectuent à la vitesse du cache |
| Cohérence avec la mémoire | La mémoire est toujours à jour, ce qui simplifie le partage avec le DMA et les autres cœurs | La mémoire peut être périmée jusqu'à la réécriture de la ligne, la cohérence demande donc plus de soin |
| Complexité | Simple | Plus complexe : dirty bits, réécriture lors de l'éviction, protocoles de cohérence |
| Coût de l'éviction | Faible : rien n'est à écrire | L'éviction d'une ligne modifiée coûte une écriture supplémentaire en mémoire |
| Politique habituelle en cas d'échec d'écriture | No-write-allocate | Write-allocate |
| Usage typique | Certains caches L1 et systèmes simples ou axés sur la fiabilité | La plupart des caches de CPU modernes, en particulier L2 et L3 |
Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.