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.
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.
Barramentos de Controle, Endereços e de Dados) |
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 hit acertos
miss falhas
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.
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 I, 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 Quadcore 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.
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.
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
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
cache |
Máxima flexibilidade no posicionamento de qualquer Palavra (ou linha) da memória principal em qualquer Palavra (ou linha) da
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;
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
Nenhum comentário:
Postar um comentário