Давайте розглянемо це на прикладі. Припустимо, у нас є прямий зіставлений кеш і використовується політика зворотного запису. Отже, ми маємо дійсний біт, брудний біт, тег і поле даних у рядку кешу. Припустимо, у нас є операція: запишіть A (де A відображається на перший рядок кешу).
Що трапляється, так це те, що дані (A) з процесора записуються в перший рядок кешу. Встановлені дійсні біти та біти тегів. Брудний біт встановлений на 1.
Брудний біт просто вказує, що рядок кешу був коли-небудь записаний з моменту останнього введення в кеш!
Тепер припустимо, виконується інша операція: читаємо E (де E також відображається у першому рядку кешу)
Оскільки у нас є прямий зіставлений кеш, перший рядок можна просто замінити блоком E, який буде виведено з пам'яті. Але оскільки блок, останній записаний у рядок (блок A), ще не записаний в пам'ять (позначений брудним бітом), тому кеш-контролер спочатку видасть запис назад в пам'ять для передачі блоку A в пам'ять, потім він замінить рядок на блок E, видавши операцію зчитування в пам'ять. брудний біт тепер встановлений на 0.
Тож політика зворотного перепису не гарантує, що блок буде однаковим у пам'яті та пов'язаному з ним рядку кешу. Однак, коли рядок збирається замінити, спочатку виконується зворотний запис.
Політика написання - це якраз навпаки. Відповідно до цього, пам’ять завжди матиме сучасні дані. Тобто, якщо кеш-блок записаний, пам’ять також буде записана відповідно. (без використання брудних шматочків)
write back
кращу продуктивність?