Meu entendimento é que a principal diferença entre os dois métodos é que no método "write-through" os dados são gravados na memória principal por meio do cache imediatamente, enquanto no "write-back" os dados são gravados em um "tempo posterior".
Ainda precisamos esperar pela memória no "tempo posterior", então qual é a vantagem de "write-through"?
caching
cpu-architecture
cpu-cache
Naftaly
fonte
fonte
write back
tem melhor desempenho?write back
tem melhor desempenho, porque gravar na memória principal é muito mais lento do que gravar no cache da cpu, e os dados podem ser curtos (os meios podem mudar novamente mais cedo e não há necessidade de colocar a versão antiga na memória). É complexo, mas mais sofisticado, a maioria das memórias na cpu moderna usa essa política.Respostas:
A vantagem da gravação na memória principal é que ela simplifica o projeto do sistema do computador. Com write-through, a memória principal sempre tem uma cópia atualizada da linha. Assim, quando uma leitura é feita, a memória principal sempre pode responder com os dados solicitados.
Se o write-back for usado, às vezes os dados atualizados estão em um cache do processador e às vezes na memória principal. Se os dados estiverem em um cache de processador, esse processador deve impedir que a memória principal responda ao pedido de leitura, porque a memória principal pode ter uma cópia desatualizada dos dados. Isso é mais complicado do que write-through.
Além disso, o write-through pode simplificar o protocolo de coerência do cache porque não precisa do estado Modify . O estado Modify registra que o cache deve escrever de volta na linha do cache antes de invalidar ou remover a linha. Em write-through, uma linha de cache sempre pode ser invalidada sem escrever de volta, pois a memória já tem uma cópia atualizada da linha.
Mais uma coisa - em um software de arquitetura de write-back que grava em registradores de E / S mapeados em memória, deve-se tomar medidas extras para garantir que as gravações sejam enviadas imediatamente para fora do cache. Caso contrário, as gravações não serão visíveis fora do núcleo até que a linha seja lida por outro processador ou a linha seja removida.
fonte
talvez este artigo possa ajudá-lo a vincular aqui
Write-through: Write é feito de forma síncrona para o cache e para o armazenamento de apoio.
Write-back (ou Write-behind): A escrita é feita apenas no cache. Um bloco de cache modificado é gravado de volta no armazenamento, pouco antes de ser substituído.
Write-through: quando os dados são atualizados, eles são gravados no cache e no armazenamento de back-end. Esse modo é fácil de operar, mas é lento na gravação de dados porque os dados precisam ser gravados no cache e no armazenamento.
Write-back: quando os dados são atualizados, eles são gravados apenas no cache. Os dados modificados são gravados no armazenamento de backend apenas quando os dados são removidos do cache. Este modo tem alta velocidade de gravação de dados, mas os dados serão perdidos se ocorrer uma falha de energia antes que os dados atualizados sejam gravados no armazenamento.
fonte
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)
fonte
As políticas de write-back e write-through descrevem quando ocorre uma ocorrência de gravação , ou seja, quando o cache tem as informações solicitadas. Nestes exemplos, presumimos que um único processador está gravando na memória principal com um cache.
Write-through: as informações são gravadas no cache e na memória, e a gravação termina quando ambos terminam. Isso tem a vantagem de ser mais simples de implementar, e a memória principal é sempre consistente (em sincronia) com o cache (para o caso do uniprocessador - se algum outro dispositivo modifica a memória principal, então esta política não é suficiente), e uma falha de leitura nunca resulta em gravações na memória principal. A desvantagem óbvia é que cada ocorrência de gravação precisa fazer duas gravações, uma das quais acessa a memória principal mais lenta.
Write-back: as informações são gravadas em um bloco no cache. O bloco de cache modificado só é gravado na memória quando é substituído (na verdade, uma gravação lenta ). Um bit especial para cada bloco de cache, o bit sujo , marca se o bloco de cache foi modificado ou não enquanto estava no cache. Se o bit incorreto não for definido, o bloco de cache está "limpo" e uma falha de gravação não precisa gravar o bloco na memória.
A vantagem é que as gravações podem ocorrer na velocidade do cache e, se a gravação dentro do mesmo bloco, apenas uma gravação na memória principal for necessária (quando o bloco anterior estiver sendo substituído). As desvantagens são que esse protocolo é mais difícil de implementar, a memória principal pode não ser consistente (não está em sincronia) com o cache e as leituras que resultam na substituição podem causar gravações de blocos sujos na memória principal.
As políticas para uma falha de gravação são detalhadas no meu primeiro link.
Esses protocolos não cuidam dos casos com vários processadores e vários caches, como é comum nos processadores modernos. Para isso, são necessários mecanismos de coerência de cache mais complicados . Os caches write-through têm protocolos mais simples, pois uma gravação no cache é imediatamente refletida na memória.
Bons recursos:
fonte
O write-back é mais complexo e requer um Protocolo de Coerência de Cache (MOESI) complicado, mas vale a pena, pois torna o sistema rápido e eficiente.
O único benefício do Write-Through é que ele torna a implementação extremamente simples e nenhum protocolo de coerência de cache complicado é necessário.
fonte