memória cache - simepisimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · ram...
TRANSCRIPT
![Page 1: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/1.jpg)
Memória cache
Prof. Francisco Adelton
![Page 2: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/2.jpg)
Memória Cache
Seu uso visa obter uma velocidade de acesso à memória próxima da velocidade das memórias mais rápidas e, ao mesmo tempo, disponibilizar no sistema uma memória de grande capacidade, a um custo equivalente ao das memórias de semicondutor mais baratas.Contém uma cópia de parte da memória principal. Quando o processador deseja ler uma palavra da memória, é realizado um teste para se a palavra está na memória cache. Se estiver, ela é fornecida ao processador. Caso contrário, um bloco de dados da memória principal, constituído de um número fixo de palavras, é lido para a memória cache e em seguida a palavra requerida é entregue ao processador.
![Page 3: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/3.jpg)
Memória Cache
– Objetivo - Simular a existência de uma memória de grande capacidade e alta velocidade para a CPU.
– Operação - Manter em uma memória de pequena capacidade e alta velocidade cópias das posições que mais provavelmente serão acessadas na MP.
![Page 4: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/4.jpg)
conceitos básicos
Princípio da proximidade: Programas tendem a reutilizar os dados e as instruções usados recentemente. Existem 2 tipos de proximidade:– proximidade temporal: Num futuro próximo, o
programa irá referenciar os programas e dados referenciados recentemente;
– proximidade espacial: Num futuro próximo, o programa irá referenciar os programas e objetos de dados que tenham endereços próximos das últimas referências.
![Page 5: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/5.jpg)
• Como memória rápida é cara, a memória égeralmente organizada numa hierarquia de vários níveis: cada nível tem menor capacidade, é mais rápido e mais caro que o seguinte.
• Freqüentemente cada nível está contido no seguinte (mas nem sempre).
• A hierarquia de memória também éresponsável pela verificação de endereços (jáque tem de mapear endereços nos níveis corretos).
• A importância da hierarquia de memória tem aumentado com os avanços de CPU.
![Page 6: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/6.jpg)
Uma hierarquia de memória simples
![Page 7: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/7.jpg)
Termos• Cache hit—CPU encontra item na cache (acerto).• Cache miss—CPU não encontra item na cache (falha).• Bloco - conjunto de dados (de tamanho fixo) que é obtido de
memória e colocado em cache (contém o item pedido).• A proximidade temporal implica que o item será utilizado de
novo dentro de pouco tempo.• A proximidade espacial implica que haja uma probabilidade
elevada de que os outros dados do bloco sejam usados dentro de pouco tempo.
• O tempo necessário para processar uma falha depende da latência e da largura de banda da memória.– A latência determina o tempo necessário para obter o primeiro elemento
do bloco.– A largura de banda determina o tempo necessário para obter o resto do
bloco.
![Page 8: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/8.jpg)
Termos
• Write-through (escrita direta), quando o processador precisa armazenar dados na memória – o controlador de cache de memória atualizava a memória RAM imediatamente.
• Write back” (contra-escrita), as operações de escrita a memória RAM não é atualizada imediatamente, o processador armazena os dados no cache de memória e o controlador de memória atualiza a memória RAM apenas quando ocorrer um erro do cache.
![Page 9: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/9.jpg)
Níveis de Cache
• Nível 1 (L1): Localizada no interior do núcleo do processador, trabalha na velocidade de clock do sistema, e é a primeira a ser consultada pela CPU. Pode estar dividida em Cache de Instruções e de Dados. Ex: AMD Athlon: 128KB divididos (64KB instruções + 64KB dados).
• Nível 2 (L2): Antigamente localizada na placa-mãe do computador, atualmente é construída dentro da mesma pastilha do processador (a partir do Pentium 3). Possui menor velocidade e maior capacidade que a L1. Tamanho típico de 512KB
![Page 10: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/10.jpg)
Níveis de Cache
• Nível 3 (L3): Existente apenas em alguns sistemas, é atualmente integrada ao processador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a CacheL2, com tamanho típico de 1 a 2MB.
• Front Side Bus (FSB): Barramento de conexão entre a MP e a CPU (localizado na placa-mãe).
• Back Side Bus (BSB): Barramento de conexão entre a Cache L2 e a CPU (localizado dentro do invólucro do processador).
![Page 11: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/11.jpg)
Mapeamento de Dados entre MP e Cache
Capacidade da MP muito maior do que a Cache => Somente partes da MP podem ser carregadas na Cache.
Problema: Como saber se um determinado dado (ou instrução) está carregado na Cache?Solução: Mapeamento Traduzir endereços da MP para a Cache.
![Page 12: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/12.jpg)
Organização do Cache de Memória
• O cache de memória é divido internamente em linhas, cada uma podendo guardar de 16 a 128 bytes, dependendo do processador. Na maioria dos processadores atuais o cache de memória está organizado em linhas de 64 bytes (512 bits), portanto consideraremos um cache de memória usando linhas de 64 bytes em nossos exemplos dados nesta aula.
![Page 13: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/13.jpg)
Organização do Cache de Memória
• Portanto, um cache de memória L2 de 512 KB é dividido em 8.192 linhas. Lembre-se que 1 KB é igual a 2^10 ou 1.024 bytes. A conta é a seguinte: 524.288 / 64 = 8.192.
• Consideraremos um processador de um único núcleo com 512 KB de memória cache L2 em nossos exemplos.
![Page 14: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/14.jpg)
Organização do Cache de Memória
![Page 15: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/15.jpg)
Memórias
Tag: informa qual linha da mem. principal está armazenada na linha de cache correspondente.
![Page 16: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/16.jpg)
Tipos de mapeamentos
• Para efetuar a transferência de um bloco de dados da MP para uma linha da Cache, pode-se utilizar três tipos de mapeamento:– Direto;– Associativo;
– Associativo por Grupos;
![Page 17: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/17.jpg)
Mapeamento Direto• Neste tipo de organização, há apenas uma posição no
cache para onde um item de dado pode ser transferido.• As vantagens deste tipo de organização incluem:
– Simplicidade de hardware, e conseqüentemente custo mais baixo;– Não há necessidade de escolher uma linha para ser retirada do
cache, uma vez que há uma única opção. Isto dispensa a implementação de um algoritmo de troca de linhas;
– Operação rápida• Apesar de simples, esta estratégia é pouco utilizada devido
à sua baixa flexibilidade. Como há apenas uma posição no cache onde o item solicitado pode estar localizado, a probabilidade de presença no cache hit pode ser baixa. Assim, pode haver queda sensível no desempenho em situações onde o processador faz referências envolvendo itens que são mapeados para uma mesma posição do
• cache.
![Page 18: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/18.jpg)
Exemplo
• Se tivermos um micro com 1 GB de memória RAM, esse 1 GB será dividido em 8.192 blocos (assumindo que o cache de memória use a configuração que descrevemos acima), cada um com 128 KB (1.073.741.824 / 8.192 = 131.072 –lembre-se que 1 GB é igual a 2^30 bytes, 1 MB é igual a 2^20 bytes e 1 KB é igual a 2^10 bytes). Se o micro tivesse 512 MB a memória também seria dividida em 8.192 blocos, mas desta vez cada bloco teria 64 KB. E assim por diante.
![Page 19: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/19.jpg)
Mapeamento Direto
![Page 20: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/20.jpg)
Exercício
• Suponha uma MP com espaço de endereçamento de 4G células, tendo cada uma um endereço de 32 bits (232 = 4G).
• Assuma que a Memória Cache associada a esta MP possui uma capacidade de armazenamento de 64KBytes, divididos em 1024 linhas, com capacidade de 64 Bytes por linha (64KBytes/1024 linhas = 64 Bytes por linha).
• Cada linha da Cache deverá acomodar quantos blocos da MP (um de cada vez)?
![Page 21: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/21.jpg)
• Neste esquema, os blocos da MP não possuem um Quadro da Cache fixado previamente para o seu armazenamento.
• Neste caso, o endereço da MP é dividido em 2 campos:
• Deslocamento: Os mesmos 6 bits menos significativos utilizados para localizar o conteúdo de uma célula dentro do bloco armazenado.
• Tag: Identifica o endereço completo do bloco da MP. Como a MP foi dividida em 64M Blocos (B= 64M), o número de bits atribuído para o campo Tag deve ser suficiente para endereçar todos os blocos (226 = 64M).
![Page 22: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/22.jpg)
Operação de Leitura na Cachecom Mapeamento Associativo
• Em caso positivo, o conteúdo da célula desejada élocalizado dentro do bloco através dos 6 bits de Deslocamento, e então transferido para a CPU.
• Em caso negativo, o endereço do bloco (Tag) éutilizado para localizar o bloco desejado na MP e trazê-lo até a Cache, substituindo um bloco anteriormente carregado.
• Problema: Qual bloco já carregado na Cachedeverá dar lugar ao novo bloco a ser carregado? Depende do Algoritmo de Substituição utilizado.
![Page 23: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/23.jpg)
Conclusão sobre o Mapeamento Associativo
• Esta técnica de mapeamento evita o problema da fixação dos blocos aos Quadros da Cacheque ocorre no Mapeamento Direto. Por outro lado, exige uma lógica mais complexa na Cache, de modo a examinar rapidamente cada campo Tag de todas as linhas da Cache.
• Existe ainda o problema do desenvolvimento de um algoritmo de substituição adequado para a troca dos blocos carregados na Cache.
![Page 24: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/24.jpg)
Cache Associativo por Grupos de n-vias
• Nesta configuração o cache de memória édividido em vários blocos (grupos) contendo “n” linhas cada.
• Dessa forma em um cache associativo por grupos de 4 vias o cache de memória terá2.048 blocos contendo quatro linhas cada (8.192 linhas / 4). Aqui nós estamos continuando com o nosso exemplo de um cache L2 de 512 KB dividido em 8.192 linhas de 64 bytes. Dependendo do processador o número de blocos será diferente.
![Page 25: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/25.jpg)
Cache Associativo por Grupos de n-vias
![Page 26: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/26.jpg)
Exemplo
• A memória RAM é dividia no mesmo número de blocos disponível no cache de memória. Continuando o exemplo do cache de 512 KB Associativo por grupos de 4 vias, a memória RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache de memória. Cada bloco da memória serávinculado a um conjunto de linhas dentro do cache, da mesma forma que no cache com mapeamento direto. Com 1 GB de memória RAM, a memória seria dividida em 2.048 blocos com 512 KB cada.
![Page 27: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/27.jpg)
Exemplo
![Page 28: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/28.jpg)
Cache Associativo por Grupos de n-vias
• Como você ver o mapeamento é similar ao que acontece com o cache com mapeamento direto, a diferença é que para cada bloco de memória existe agora mais de uma linha disponível no cache de memória. Cada linha pode armazenar o conteúdo de qualquer endereço dentro do bloco mapeado. Em um cache Associativo por grupos de 4 vias cada grupo no cache de memória pode armazenar até quatro linhas do mesmo bloco de memória.
![Page 29: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/29.jpg)
TAMANHO DA MEMÓRIA CACHE
• A escolha do tamanho do bloco na memória cache é uma decisão de compromisso. Blocos grandes tendem a aumentar a taxa de acerto mas possuem os seguintes incovenientes:– Pode diminuir a taxa de acerto global por não
permitirem a convivência simultânea de muitos blocos na cache.
– Em caso de leitura com falhas o tempo de acesso em geral aumenta, pois mais informações precisam ser lidas na MP. Perde-se tempo de transferência.
– Blocos grandes podem acarretar a ocupação desnecessária do cache com informações que nunca serão utilizadas.
![Page 30: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/30.jpg)
Exercício
1. Cache de Memória L2 nos Processadores Multi-Núcleos:
– Nos processadores com mais de um núcleo a arquitetura do cache L2 varia muito, dependendo do processador. Faça um comparativo entre as atuais soluções de cache de memória L2 presentes nos processadores de núcleos múltiplos(fabricantes Intel e AMD).
2. O que acontece:– Se usando um cache L2 de 512KB, se nós
aumentássemos o cache para 1 MB (a única maneira de fazer isso seria substituindo o processador), quantas linhas de 64 bytes teríamos no cache de memória? Qual o total de grupos com quatro linhas cada?A RAM de 1 GB seria dividida em X blocos de quantos KB?
![Page 31: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/31.jpg)
POLÍTICAS PARA SUBSTITUIÇÃO DE BLOCOS NA MEMÓRIA CACHE
(Não se aplica ao mapeamento direto pois não se tem escolha onde alocar o dado)
Os esquemas de mapeamento totalmente associativo ou associativo por conjunto exige uma política de substituição de blocos exigem uma política de substituição de blocos na memória cache.
• Algumas dessas políticas são:– Randômica: Um bloco é escolhido aleatoriamente para ser substituído.
Política de fácil implementação, mas gera problemas de desempenho em esquemas totalmente associativo. Pode descartar um dado que seria utilizado em seguida.
– FIFO - (First In First Out) O bloco que está a mais tempo no cache ésubstituído. Menos simples de implementar e pode gerar problemas de desempenho se o bloco mais antigo estiver sendo ainda muito utilizado.
– LRU - (Least Recently Used) Substitui-se o bloco que há mais tempo não é utilizado. É o esquema com o melhor desempenho e sua implementação é a mais complicada. Um bit na cache marca se ela foi ou não utilizada em cada tic do clock (Não é utilizado na prática pois consome memória cache para armazenar tais informações).
![Page 32: Memória cache - SIMEPIsimepi.org.br/documentos/sim_links/adelton_ribeiro_memoria_cache... · RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache](https://reader034.vdocuments.mx/reader034/viewer/2022042404/5f1bad2883b341098e6d6ffc/html5/thumbnails/32.jpg)
ABORDAGENS PARA MELHORAR O DESEMPENHO DA CACHE
• Reduzir a taxa de "miss" aumentando a probabilidade de "hit"
• Reduzir o tempo de acesso em caso de "hit"• Utilizar o write-buffer (Buffer para escrita) para evitar
que o processador aguarde a escrita na MP no modo write through
• Utilizar a cache de instruções e dados separados para possibilitar acessos simultâneos no cachje pelo processador
Obs: Blocos são como páginas. Só se pega na MP bloco a bloco, mesmo que o primeiro bloco sócontenha metade da informação que você deseja.
Write Buffer é um cache separado só para escrita. Economiza tempo de acesso.