Organização de Computadores – Aula 12 – Memória Cache
Organização de Memória Cache
Visão Geral da Seção: Nesta aula, o foco está na organização das memórias cache e nos princípios para projetar a hierarquia de memória, abordando o conceito básico de mapeamento direto.
Conceito de Mapeamento Direto
- Em um cache com mapeamento direto, a posição na memória cache é determinada pelo endereço da memória principal.
- O cálculo do endereço envolve dividir a quantidade de blocos da memória pela quantidade de blocos do cache, sendo essencial que todas as relações de endereço sejam potências de dois.
- Todas as relações e cálculos de endereço devem ser potências de dois, com possíveis aproximações quando necessário.
Identificação e Mapeamento
- Para identificar onde uma palavra da memória principal será escrita no cache, são observados os bits menos significativos do endereço.
- Através dos bits mais baixos do endereço, é possível determinar a posição do cache onde a informação será armazenada.
Uso dos Bits de Controle
- Os bits de tag e válidos são cruciais para distinguir entre as posições no cache e identificar se uma entrada é válida ou não.
- Os bits de tag representam os outros bits do endereço na memória, auxiliando na associação correta das informações entre a memória principal e o cache.
Funcionamento Prático
- No exemplo prático apresentado, ao acessar uma instrução não presente no cache vazio, ocorre uma falha que leva à busca na memória principal e posterior escrita no cache.
Acesso e Organização de Memória Cache
Visão Geral da Seção: Nesta seção, são abordados conceitos essenciais sobre o acesso e a organização da memória cache em sistemas computacionais.
Acesso à Memória Cache
- Ao tentar acessar uma palavra na memória cache, pode ocorrer um acerto se a informação já estiver disponível. Caso contrário, é necessário buscar a informação correta na memória principal.
Falhas e Atualizações do Cache
- Falhas no cache podem ocorrer devido ao cache estar vazio ou conter informações incorretas. Nestes casos, é necessário buscar a informação correta na memória principal e atualizar o cache.
Mapeamento Direto
- No mapeamento direto, é preciso associar bits de tag aos dados armazenados no cache. O processo envolve selecionar a linha do cache com base nos bits de índice e comparar os bits de tag para verificar se há um hit.
Estrutura Básica do Cache
- A estrutura básica do cache com mapeamento direto inclui tags, índices e validade para garantir o acesso eficiente aos dados armazenados.
Organização Avançada da Memória Cache
Visão Geral da Seção: Esta parte explora detalhes avançados sobre como os endereços são organizados na memória cache para otimizar o desempenho dos sistemas computacionais.
Organização dos Endereços
- Os endereços são compostos por conjuntos de bits que identificam o índice (linha), tag (identificação única) e offset (posição dentro da palavra/bloco).
Exemplos Práticos
- Em exemplos práticos, como no MIPS, onde a memória é indexada por byte, os offsets são cruciais para identificar bytes específicos na memória.
Cálculos Necessários
- Para determinar quantos bits são necessários para índice e offset em um conjunto de blocos específico, é fundamental considerar fatores como o número de blocos e bytes por bloco.
Tipos de Associatividade em Memórias Cache
Visão Geral da Seção: Aqui são discutidos diferentes tipos de associatividade em caches e suas implicações no desempenho dos sistemas computacionais.
Mapeamento Direto vs. Associativo Completo
- Enquanto o mapeamento direto oferece simplicidade com uma única posição fixa para cada bloco, o associativo completo permite flexibilidade total na alocação dos dados no cache.
Vantagens e Desvantagens
Associatividade em Memória Cache
Visão Geral da Seção: Nesta seção, são abordados os conceitos de associatividade em memória cache, incluindo associatividade por conjunto e completamente associativa.
Associatividade por Conjunto
- A associatividade por conjunto busca equilibrar entre mapeamento direto e associatividade completa.
- Em um conjunto, há liberdade para posicionar palavras, com um número específico de conjuntos determinado pela quantidade de posições disponíveis.
- O número de blocos no cache e o tipo de associatividade influenciam as possibilidades de combinação dentro do cache.
Associatividade Completa
- No caso da associatividade completa, a tag deve ser comparada com todas as tags disponíveis.
- A verificação do bit de válido e dos comparadores é replicada para cada tag disponível.
- O cache associativo reduz falhas por conflito, mas aumenta a complexidade na verificação do acerto.
Organização da Hierarquia de Memória
- Os princípios discutidos aplicam-se a todos os níveis da hierarquia de memória, desde caches até memória principal e disco.
- Quatro aspectos-chave no projeto do cache: localização do bloco, substituição em casos de falha e política descrita estão relacionados à organização da hierarquia.
Localização do Bloco
- A determinação da localização do bloco varia conforme o tipo de associatividade adotado: mapeamento direto, por conjunto ou completamente associativo.
- Maior associatividade resulta em menor taxa de falhas por conflito, mas também em maior complexidade na implementação.
Substituição do Bloco
- Existe um equilíbrio entre diferentes tipos de associatividades para otimizar a organização dos caches em vários níveis da hierarquia.
- A escolha da associação nos diversos níveis não precisa ser uniforme; pode variar conforme a necessidade e complexidade requerida.
Posições Vazias e Estratégias de Escrita em Memória
Visão Geral da Seção: Nesta parte, são abordadas questões relacionadas a posições vazias na memória e estratégias de escrita.
Posições Vazias na Memória
- Utilizar posições vazias na memória quando necessário para armazenamento.
- Priorizar o uso de dados que foram acessados recentemente de acordo com o princípio da localidade temporal.
Estratégia LRU (Least Recently Used)
- Em sistemas com alta associatividade, a implementação da estratégia LRU pode ser custosa.
- Estudos indicam que a substituição aleatória pode se assemelhar ao funcionamento do LRU em caches.
Políticas de Escrita em Memória
Visão Geral da Seção: Esta parte discute as políticas de escrita em diferentes níveis de memória.
Política WR Through
- Escrever através de todos os níveis de memória, simplificando a substituição.
- Cada instrução de escrita no cache requer garantia de atualização nos níveis subsequentes, tornando o processo potencialmente lento.
Política WR Back
- Atualização apenas no nível imediatamente seguinte, resultando em maior velocidade.
- Pode gerar inconsistências entre os diferentes níveis hierárquicos da memória.
Memória Virtual e Estratégias de Escrita
Visão Geral da Seção: Aborda as estratégias específicas para escrita em memórias virtuais.
Estratégia Writeback (WR Back) na Memória Virtual
- Essencial pela lentidão dos discos rígidos mecânicos.