Regardons cela à l'aide d'un exemple. Supposons que nous ayons un cache mappé direct et que la politique de réécriture soit utilisée. Nous avons donc un bit valide, un bit sale, une balise et un champ de données dans une ligne de cache. Supposons que nous ayons une opération: écrire A (où A est mappé sur la première ligne du cache).
Ce qui se passe, c'est que les données (A) du processeur sont écrites sur la première ligne du cache. Le bit valide et les bits d'étiquette sont définis. Le bit sale est mis à 1.
Un bit sale indique simplement que la ligne de cache a été écrite depuis sa dernière mise en cache!
Supposons maintenant qu'une autre opération soit effectuée: lisez E (où E est également mappé à la première ligne de cache)
Puisque nous avons un cache mappé directement, la première ligne peut simplement être remplacée par le bloc E qui sera apporté de la mémoire. Mais comme le dernier bloc écrit dans la ligne (bloc A) n'est pas encore écrit dans la mémoire (indiqué par le bit sale), le contrôleur de cache émettra d'abord une réécriture dans la mémoire pour transférer le bloc A en mémoire, puis il remplacera la ligne par le bloc E en émettant une opération de lecture dans la mémoire. Le bit sale est maintenant mis à 0.
La politique de réécriture ne garantit donc pas que le bloc sera le même en mémoire et dans sa ligne de cache associée. Cependant, chaque fois que la ligne est sur le point d'être remplacée, une réécriture est effectuée dans un premier temps.
Une politique d'écriture directe est exactement le contraire. Selon cela, la mémoire aura toujours des données à jour. Autrement dit, si le bloc de cache est écrit, la mémoire sera également écrite en conséquence. (pas d'utilisation de bits sales)
write back
a de meilleures performances?