O documento descreve como a memória cache foi desenvolvida para minimizar o tempo de espera do processador pela memória principal, armazenando temporariamente blocos de dados frequentemente acessados. Também explica como a memória cache funciona de acordo com os princípios de localidade temporal e espacial e os diferentes níveis de cache.
1. Por conta do gargalo existente entre Processador e Memória
Principal, na busca por minimizar o impacto causado por essa
“espera” obrigatória, do processador pelos ciclos da MP, foi
desenvolvido um elemento intermediário entre Memória e
Processador, que se tornou indispensável nos sistemas atuais de
computação: Seu nome - Memória CACHE.
A busca constante pela maior eficiência do processador, nos sistemas computacionais, fez
surgir a Hierarquia de memória, que divide em categorias as memórias existentes. O objetivo
dessa divisão é dar tratamento integrado e melhor gerenciamento de recursos que permitam
um melhor aproveitamento das funções do processamento. Nessa pirâmide é demonstrada a
relação de custo-benefício das memórias primárias, secundárias e demais.
2. O Principio de Localidade
Com o advento do multiprocessamento, constatou-se que os tempos de acesso à memória
poderiam constituir um grande gargalo e até impedir a evolução dos Processadores, que
sempre dependeram do acesso à Memória Principal a fim de processar as informações num
Sistema. O objetivo dos projetos da Arquitetura de Computadores sempre foi o de dar maior
eficiência ao processador, diminuindo seu tempo ocioso (silêncios) e permitindo maior uso
compartilhado por parte dos processos.
Com a continuada pesquisa em aplicações científicas, comerciais e acadêmicas, percebeu-se
que os programas, na sua grande maioria, são executados em lotes de instruções, que são
frequentemente acessadas pelo processador e que há grande chance de que essas instruções,
uma vez acessadas sejam acessadas novamente em um curto espaço de tempo.
Estabelecido o “Princípio da Localidade”, sabemos hoje que ele pode ser analisado em duas
faces:
A Localidade Temporal: Que diz respeito ao intervalo de tempo em que o processador faz
acesso à Palavra da Memória – Se um Bloco foi acessado recentemente, há grandes chances
probabilidades de que ele seja novamente acessado em breve, durante a execução de um
programa (loop).
A Localidade Espacial: Que diz respeito à probabilidade de que o Processador, ao acessar uma
Palavra, em seguida tentará acessar uma Palavra na memória subjacente à anteriormente
acessada. Se uma Palavra foi acessada recentemente, há grandes probabilidades de que, o
próximo acesso à Memória Principal se dê em busca de Palavras (blocos) subjacentes.
A função da Memória Cache, neste contexto, é justamente servir de repositório das Palavras
(ou bloco de informações) mais comumente acessadas pelo processador, durante a execução
de uma aplicação, diminuindo a quantidade de acessos à Memória Principal, que é exterior ao
processador, causando uma drástica diminuição nos tempos de resposta.
Cada vez que o processador precisa acessar um bloco, a busca se dá, primeiramente, nas linhas
da Memória Cache. Se a informação está armazenada ali, chamamos a isso de hit, caso
contrário, a busca e a transferência da informação será feita na Memória Principal (através dos
Barramentos de Controle, Endereços e de Dados).
hit acertos
miss falhas
3. A proporção de hits, num projeto para implementação de Memória Cache, é um dos fatores
relevantes para sua construção. Outros fatores levados em conta são:
Tempo de acesso a memória principal;
O custo médio, por bit, da memória principal, da cache;
O tempo de acesso das memórias cache L1 ou L2;
A natureza do programa a ser executado no momento
Esquemas de Escrita da Memória Cache
Os blocos (Palavra) escritos na Memória Cache, mantêm o seu correspondente na Memória
Principal. Quando é necessário fazer a relocação do bloco (substituição ou swap), o
Processador verifica se houve alteração no dado armazenado.
As memórias caches possuem dois modos básicos para trabalhar em relação à atualização dos
dados na memória principal durante uma escrita:
a) Write-through - Os dados são atualizados tanto na memória cache como na memória
principal.
b) Write-back - Os dados são atualizados apenas na memória cache, e copiados para a
memória principal, apenas quando da substituição do bloco/linha modificado na
Memória Cache.
DIVISÃO DAS MEMÓRIAS CACHE
L1 - (Memórias Cache internas, no processador) – Posteriormente dividida em L1 para
Instrução e L1 para Dados;
L2 - Pequena porção (maior que L1) inicialmente alocada na Placa Mãe, posteriormente foi
trazida também para o interior do processador;
L3 - De implementação mais recente, passou a existir com o advento K6 III, da AMD, como um
recurso externo de memória rápida adicional, já que os dois caches (L1 e L2) já estavam
integrados ao processador. Agora, a com o lançamento de múltiplos núcleos num mesmo
processador, a maioria (AMD e INTEL, por exemplo) já vem com a cache L3 integrada.
A divisão tradicional entre cache L1 e cache L2 funcionou bem durante a fase dos
processadores Single-core e Dual-core. Entretanto, com a introdução dos processadores Quad-
core passou a fazer mais sentido usar caches L1 e L2 menores e incluir um terceiro nível de
cache. Com isso, temos quatro pequenos blocos de cache L1 e L2 (um para cada núcleo) e um
grande cache L3 compartilhado entre todos.
4. COMO A MEMÓRIA CACHE ARMAZENA DADOS
MAPEAMENTO DIRETO
Neste tipo de mapeamento,
a Memória Principal é
subdividida em
agrupamentos de células,
que podem ser armazenados
diretamente nas “células” da
memória cache. Estabelece
um mapeamento direto
entre os blocos da Memória
Principal e as células da
memória cache, de modo
um bloco X estará sempre
associado a uma mesma
célula na memória cache.
Vantagens:
Implementação e funcionamento simples.
Desvantagens:
Inflexibilidade em relação ao estabelecimento da associação entre Memória Principal e
Memória Cache, que pode acarretar um aumento na taxa de falhas (misses) nos acessos à
Memória Cache, degradando o desempenho do sistema - quanto mais falhas, mais vezes o
processador terá de buscar a informação na Memória Principal.
5. MAPEAMENTO ASSOCIATIVO
Diferente do mapeamento direto, o Mapeamento associativo não determina um local fixo na
Memória Cache para os blocos da Memória Principal; Os endereços de acesso a MP são
interpretados da mesma forma que no mapeamento direto, porém o número de Bits
demandados para a determinação do rótulo é maior.
Vantagens
Flexibilidade na associação entre MP e MC;
Desvantagens
Complexidade de implementação;
Maior demanda de processamento
MAPEAMENTO ASSOCIATIVO POR GRUPO DE N-VIAS
Criado com o objetivo de eliminar os problemas das técnicas de mapeamento direto e
mapeamento associativo; Blocos da MP são associados a um conjunto de linhas na Memória
Cache.
Vantagem
Máxima flexibilidade
no posicionamento de
qualquer Palavra (ou
linha) da memória
principal em qualquer
Palavra (ou linha) da
cache.
Desvantagens
O custo em hardware para a comparação simultânea de todos os endereços armazenados na
cache;
Necessidade de se algoritmo de substituição (em hardware) para selecionar uma linha da
cache na ocorrência um miss;
6. ALGORITMOS DA MEMÓRIA CACHE
Os algoritmos de substituição de dados na Memória Cache, definem qual dos blocos
armazenados na memória cache podem ser retirados para armazenamento de no um novo
bloco.
Esses algoritmos só se aplicam nos casos de mapeamentos associativos, já que por esse
método, a posição do bloco na Memória Principal é que determinará a posição da informação
na Memória Cache.
Algoritmos de Substituição
LRU (least Recently Used): Determina como candidatos à substituição os blocos que não
tenham sido acessados recentemente.
FIFO (First-In-First-Out): Seleciona como candidato para substituição o bloco que foi
armazenado primeiro na Memória cache;
LFU (least Frequently Used ): o sistema de controle selecionará o bloco que tem tido menos
acessos por parte do processador;
Escolha Aleatória: O sistema de controle da memória Cache escolhe aleatoriamente o bloco
que será removido.
Texto: Claudia Pereira da Costa
Fontes:
Introdução à Organização de Computadores – 5ª Ed. - Mário A. Monteiro
http://www.inf.ufes.br/~fscpereira/oec/aulas/
http://equipe.nce.ufrj.br/gabriel/sispar/ - Professor Gabriel P. Silva – UFRJ