Vejamos isso com a ajuda de um exemplo. Suponha que temos um cache mapeado direto e a política de write-back é usada. Portanto, temos um bit válido, um bit sujo, uma tag e um campo de dados em uma linha de cache. Suponha que temos uma operação: escrever A (onde A é mapeado para a primeira linha do cache).
O que acontece é que os dados (A) do processador são gravados na primeira linha do cache. Os bits de bit e tag válidos são definidos. O bit incorreto é definido como 1.
O bit sujo simplesmente indica que a linha do cache já foi gravada desde a última vez que foi trazida para o cache!
Agora, suponha que outra operação seja realizada: ler E (onde E também é mapeado para a primeira linha do cache)
Como temos o cache mapeado diretamente, a primeira linha pode ser simplesmente substituída pelo bloco E que será trazido da memória. Mas como o último bloco escrito na linha (bloco A) ainda não foi escrito na memória (indicado pelo bit incorreto), o controlador de cache primeiro emitirá uma gravação de volta para a memória para transferir o bloco A para a memória, então ele substituirá a linha com o bloco E emitindo uma operação de leitura para a memória. bit sujo agora está definido como 0.
Portanto, a política de write-back não garante que o bloco será o mesmo na memória e em sua linha de cache associada. No entanto, sempre que a linha está prestes a ser substituída, um write-back é executado primeiro.
Uma política de gravação é exatamente o oposto. De acordo com isso, a memória terá sempre um dado atualizado. Ou seja, se o bloco de cache for gravado, a memória também será gravada de acordo. (sem uso de bits sujos)
write back
tem melhor desempenho?