Je crois comprendre que la principale différence entre les deux méthodes réside dans le fait que, dans la méthode "écriture différée", les données sont écrites immédiatement dans la mémoire principale par le biais de la mémoire cache, tandis que dans "écriture différée", les données sont écrites à un "dernier moment".
Nous devons encore attendre la mémoire dans la "dernière période" alors quel est l'avantage de "l'écriture différée"?
L'avantage de l'écriture directe dans la mémoire principale est que cela simplifie la conception du système informatique. Avec l'écriture directe, la mémoire principale a toujours une copie à jour de la ligne. Ainsi, lorsqu'une lecture est terminée, la mémoire principale peut toujours répondre avec les données demandées.
Si l'écriture est utilisée, les données à jour se trouvent parfois dans le cache du processeur et parfois dans la mémoire principale. Si les données se trouvent dans une mémoire cache du processeur, ce dernier doit empêcher la mémoire principale de répondre à la demande de lecture, car la mémoire principale peut avoir une copie périmée des données. C'est plus compliqué que l'écriture.
De plus, l'écriture directe peut simplifier le protocole de cohérence du cache car il n'a pas besoin de l'état Modify. L'état Modify indique que le cache doit réécrire la ligne de cache avant d'invalider ou d'expulser la ligne. En écriture directe, une ligne de mémoire cache peut toujours être invalidée sans être écrite car la mémoire possède déjà une copie à jour de la ligne.
Une dernière chose: sur un logiciel d’architecture à réécriture qui écrit dans des registres d’E/S mappés en mémoire, vous devez prendre des mesures supplémentaires pour vous assurer que les écritures sont immédiatement envoyées hors du cache. Sinon, les écritures ne sont pas visibles en dehors du cœur tant que la ligne n'est pas lue par un autre processeur ou que la ligne n'est pas expulsée.
Regardons cela avec l'aide d'un exemple. Supposons que nous ayons un cache mappé directement 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: write A (où A est mappé sur la première ligne du cache).
En réalité, 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 défini sur 1.
Le bit sale indique simplement que la ligne de cache n'a jamais été écrite depuis sa dernière entrée dans le cache!
Supposons maintenant qu'une autre opération soit effectuée: read E (où E est également mappé sur la première ligne de cache)
Comme nous avons un cache directement mappé, la première ligne peut simplement être remplacée par le bloc E qui sera importé de la mémoire. Mais puisque le dernier bloc écrit dans la ligne (bloc A) n’est pas encore écrit dans la mémoire (indiqué par le bit modifié), le contrôleur de cache émettra d’abord un réécriture à la mémoire à transférer. le bloc A en mémoire, il remplacera alors 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 d'écriture ne garantit donc pas que le bloc sera identique en mémoire et à la 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 est tout 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)
L'écriture différée est plus complexe et nécessite un protocole MOESI (Cache Coherence Protocol) compliqué, mais elle en vaut la peine car elle rend le système rapide et efficace.
Le seul avantage de Write-Through est de rendre la mise en œuvre extrêmement simple et qu'aucun protocole de cohérence de cache complexe n'est requis.
peut-être que cet article peut vous aider lien ici
Write-through: Write est effectué de manière synchrone à la fois dans le cache et dans le magasin de sauvegarde.
Write-back (ou Write-behind): L'écriture est effectuée uniquement dans le cache. Un bloc de cache modifié est écrit dans le magasin, juste avant son remplacement.
Write-through: lorsque les données sont mises à jour, elles sont écrites à la fois dans le cache et le stockage principal. Ce mode est facile à utiliser, mais l’écriture des données est lente car les données doivent être écrites à la fois dans la mémoire cache et dans la mémoire.
Write-back: Lorsque les données sont mises à jour, elles sont écrites uniquement dans le cache. Les données modifiées sont écrites dans le stockage principal uniquement lorsque les données sont supprimées du cache. Ce mode a une vitesse d’écriture des données rapide, mais les données seront perdues si une panne de courant se produit avant que les données mises à jour ne soient écrites dans la mémoire.