Fale sobre as regras de funcionamento do cache.
sobes.tech IA
Resposta da IA
A cache armazena cópias de dados para acelerar o acesso a eles. Regras principais:
-
Regra de localidade (Locality of Reference):
- Localidade temporal: Se um elemento de dados foi utilizado recentemente, é provável que seja utilizado novamente em breve.
- Localidade espacial: Se um elemento de dados foi utilizado, é provável que os elementos vizinhos também sejam utilizados em breve.
-
Políticas de substituição de cache (Cache Replacement Policies): Determinam qual bloco de dados eliminar quando a cache está cheia e é necessário espaço para novos dados. Políticas comuns:
- FIFO (First-In, First-Out): Elimina o bloco mais "antigo".
- LRU (Least Recently Used): Elimina o bloco que foi utilizado há mais tempo.
- LFU (Least Frequently Used): Elimina o bloco que foi utilizado com menor frequência.
-
Políticas de escrita na cache (Cache Writing Policies): Determinam quando as alterações na cache são sincronizadas com a memória principal.
- Write-Through: Os dados são escritos simultaneamente na cache e na memória principal. Garante coerência, mas é mais lento.
- Write-Back: Os dados são escritos primeiro apenas na cache. A memória principal é atualizada mais tarde, quando o bloco é eliminado da cache ou marcado explicitamente como "sujo" (modificado). É mais rápido, mas requer um mecanismo para rastrear mudanças.
-
Regras para falhas de cache (Cache Miss Handling): Determinam como o sistema responde quando os dados solicitados não estão na cache.
- O sistema extrai os dados do próximo nível de memória (por exemplo, da memória principal).
- Os dados são colocados na cache (possivelmente substituindo um bloco existente), e depois fornecidos ao processo solicitante.
-
Regras de coerência (Cache Coherence Rules): Importantes em sistemas multiprocessador, onde vários processadores podem ter cópias dos mesmos dados em suas caches locais. Garantem a coerência dos dados entre todas as caches. Exemplos de protocolos: MSI, MESI.
-
Regras de invalidação/atualização (Cache Invalidation/Update): Quando um dado é modificado em um lugar (por exemplo, na cache de um processador), é necessário invalidar (tornar inválida) a cópia em outras caches ou atualizá-la, para evitar o uso de dados desatualizados.