memória cache

33
Gerenciamento da memória Cachê ALUNOS: Leonardo Zanin Rafael Viensci Rafael Moreira 3º ano de Engenharia da Computação

Upload: api-3852625

Post on 07-Jun-2015

3.177 views

Category:

Documents


2 download

DESCRIPTION

Trabalho de microprocessadores sobre gerenciamento de memória cache

TRANSCRIPT

Page 1: Memória cache

Gerenciamento da memória Cachê

ALUNOS:

Leonardo Zanin

Rafael Viensci

Rafael Moreira

3º ano de Engenharia da Computação

Page 2: Memória cache

Cachê: um lugar seguro para esconder ou guardar coisas

Webster’s New Wold Dictionary of the América Language, Third College Edition(1988)

Page 3: Memória cache

Introdução

Cachê foi o nome escolhido para designar o nível da hierarquia de memória situado entre o processador e a memória principal, na primeira máquina comercial que implementou esse nível extra de memória. Atualmente, apesar de esta designação continuar a ser a designação dominante para a palavra cachê, o termo também é usado para designar qualquer memória gerenciada de modo a tirar vantagem da localidade de acesso.

Page 4: Memória cache

Introdução

Uma memória cachê contém uma cópia de partes da memória principal. Quando o processador deseja ler uma palavra da memória, é realizado um teste para determinar se a palavra está na memória cachê. Se estiver, ela é fornecida ao processador, quando isso ocorre dizemos que houve um acerto(hit).A taxa típica de acerto varia entre 80% e 99%. Caso contrário, um bloco da memória principal, constituído de um número fixo de palavras, é lido para a memória cachê e em seguida a palavra requerida é entregue ao processador. Esse processo usa de wait states e baixa o desempenho da máquina, quando isso ocorre dizemos houve um erro(miss).a taxa de erro típica varia de 1% a 20%.

Page 5: Memória cache

INÍCIO

Recebe endereço RA da CPU

O bloco que contém o endereço RA está na memória cache?

Efetua acesso à memória principal para obter o bloco que contém RA

Aloca linha da cache para o bloco da memória principal

Carrega o bloco da memória principal na linha da cache

Entrega a palavra em RA para a CPU

FIM

Não

Sim

Page 6: Memória cache

Cachê L1 de instruções

A cachê L1 é dividido em unidades menores. A cachê contém todo um bloco de instruções, mas e

quando todas essas instruções já foram requeridas pelo processador?

O controlador de cachê percebe que o processador está chegando ao fim do cachê e carrega o próximo bloco de instruções da memória para dentro do L1 de instruções assim que o processador pedir a última instrução presente no cache.

Page 7: Memória cache

Cachê L1 de instruções

Esse esquema funcionaria muito bem se não fosse um detalhe: nem sempre os programas são executados de forma sequencial; podem existir desvios, isto é, instruções que mandam o processador carregar outras instruções a partir de um outro endereço.

Se a instrução requerida estiver na L1 de instruções, ótimo. Senão o processador terá de ir até a memória RAM buscar a nova instrução.

Page 8: Memória cache

Cachê L1 de instruções

O cachê L2 fornece um caminho de dados mais rápido para o cachê L1

Antes de ir à memória RAM o controlador de cachê L1 verifica se a instrução que o processador está pedindo já não foi carregada para dentro do cachê L2, que é muito maior do que o cachê L1 e, portanto, armazena mais informações.

Page 9: Memória cache

Cachê L1 de instruções

Para aumentar o desempenho do processador, o circuito controlador de memória cachê passou a ter um circuito de previsão de desvio.

O circuito de previsão de desvio procura no cachê instruções de desvio incondicional, como a instrução JUMP, para então mandar o controlador do cachê buscar antecipadamente o conteúdo da memória para onde futuramente o processador será desviado.

Page 10: Memória cache

Cachê L1 de instruções

O problema aparece nos casos de desvio condicional, como por exemplo “compare A com B” ou “Se A maior que B, vá para o endereço 100.000”.

O circuito de previsão de desvio não tem como saber para onde o programa será desviado, já que os valores de A e B poderão ser alterados na instrução imediatamente anterior da comparação ser feita.

Para garantir o acerto o circuito de previsão de desvio simplesmente carrega as duas ramificações possíveis.

Page 11: Memória cache

Cachê L1 de dados

Em uma memória cachê, instrução é tudo aquilo que é carregado para dentro do processador.

Entretanto, existem instruções que podem buscar dados de endereços da memória RAM ou então armazenar dados em endereços da memória RAM.

Page 12: Memória cache

Cachê L1 de dados

Uma instrução como MOV 2000h,AX faz com que o conteúdo de AX seja armazenado no endereço 2000h da memória RAM.

No caso de processadores com L1 dividido, esse pedido será enviado para o cachê L1 de dados, através da unidade de armazenamento do processador. Isso faz com que o processador seja “liberado”, enquanto o circuito controlador de cachê L1 trata de atualizar a memória RAM com o dado que foi pedido para ser armazenado.

Page 13: Memória cache

Cachê L1 de dados

O processo de leitura em memória é análogo, só que efetuado pela unidade de carga do processador.

Nesse caso, o interessante é que, se o endereço já foi lido recentemente, o seu conteúdo ainda se encontra no cachê L1 de dados e, assim, o controlador de cachê não precisa ir na memória RAM buscá-lo.

Se o dado não estiver no cachê L1 o controlador do cachê irá procurá-lo no cachê L2.

Page 14: Memória cache

Cachê L2

O cachê L2 é bem maior do que o cachê L1 e serve para carregar grandes blocos de dados da memória RAM.

As memórias cachê L2 podem ser internas ou não ao processador.

As internas são mais rápidas pois são acessadas na freqüência de clock do processador, mas as externas são acessadas na freqüência de operação externa ao processador, que é sempre bem mais lenta.

Page 15: Memória cache

Cachê L2

Além disso as memórias cachê L2 externas necessitam de um circuito controlador de cachê que atualmente vem embutido no chipset da placa-mãe.

Outro problema dessa arquitetura é que o cachê L2 utiliza um barramento concorrente, isto é, o mesmo caminho que é usado para acessar o cachê L2 também é usado para acessar a memória RAM. Isso significa que se o processador quiser acessar ao mesmo tempo o cachê de memória e a memória RAM, não pode.

Page 16: Memória cache

Modo Burst

Neste modo o processador busca no cache automaticamente uma quantidade de dados do tamanho de uma linha

O processador somente precisa pedir o primeiro dado da linha, pois o restante dos dados constantes da mesma linha do cache serão lidos automaticamente

Leitura tradicional Modo burst

1º ciclo Ordem + dado solicitado

Ordem + dado solicitado

2º ciclo Ordem + dado solicitado

Dado solicitado

3º ciclo Ordem + dado solicitado

Dado solicitado

4º ciclo Ordem + dado solicitado

Dado solicitado

Page 17: Memória cache

Arquitetura

O formato de leitura dos dados do cache é muito semelhante ao da RAM:

X-Y-Y-Yonde X representa o numero de ciclos de clock necessarios para a primeira leitura, e Y para a leitura dos demais dados presentes na mesma linha do cache.

O cache L2 por estar na placa mãe, tipicamente é acessado com a temporização 3-1-1-1, isso significa que são necessários três ciclos de clock para o primeiro acesso e um para ler os dados contidos na mesma linha do cache.

Page 18: Memória cache

Método Organizacional

O desempenho e funcionalidade do cache variam de acordo com a forma que os dados são organizados nele, existem basicamente três métodos:

- Cache com mapeamento direto (direct-mapped cache)- Cache completamente associativo (full- associative cache)- Cache associativo por grupos (set-associative cache)

A partir do 486 os processadores tem um pequeno cache de memória interno (L1)

Cache L2 externo exige um controlador de cache na placa mãe além do controlador do cache no processador para o L1, estes dois não necessitam utilizar mecanismos e arquiteturas iguais

Page 19: Memória cache

Cache com Mapeamento Direto

É o sistema mais simples, e consiste em dividir a memória RAM em pedaços do tamanho da cache, sendo que o cache já foi previamente dividida em blocos do tamanho de uma linha pelo Modo Burst do processador;

Normalmente cada linha do cache tem 256 bits (32 bytes), ou seja, quatro dados de 64 bits;

Cada linha do cache aponta para a linha de mesmo numero da RAM independente de qual bloco ela esteja;

É impossível dois ou mais dados ocuparem o mesmo número de linha do cache, por mais que estejam nas linhas de mesmo número em blocos diferentes da RAM, prevalece o último dado lido e o outro dado é lido diretamente da RAM;

Aumentando o cache, o número de blocos na RAM diminuem e conseqüentemente este problema é menos comum deixando mais eficiente o cache.

O tag é onde o cache guarda a informação de qual bloco da RAM a linha foi copiada.

Page 20: Memória cache

Exemplo

•Se o cache é de 256 KB, será dividido em 8.192 linhas (256 KB = 262.144 bytes), mas como cada linha armazena 32 bytes (256 bits)

•RAM de 16 MB

Page 21: Memória cache

Cache Completamente Associativo

A memória RAM não é dividida em blocos e assim o cache pode armazenar qualquer linha da RAM, independente da localização;

Cada linha do cache pode armazenar qualquer linha da RAM, assim há maior possibilidade de um dado estar no cache, pois não haverá a situação proibida das linhas de mesmo número;

O tag será maior, já que em cada linha do cache poderá estar armazenada qualquer linha da RAM;

Pode parecer melhor que o Mapeamento Direto, mas devido à complexidade, o controlador do cache pode demorar muito verificando se cada dado da RAM esta ou não no cache, podendo demorar mais do que se fosse acessar o dado diretamente da RAM

Page 22: Memória cache

Cache Associativo por Grupos

É a solução que possui o melhor desempenho, sendo a mais usada; É um misto das vantagens das duas anteriores; O cache é dividido em unidades independentes e menores pelo

controlador do cache, por exemplo:Um cache associativo de quatro vias (four-way), divide um cache de 256

KB em quatro caches independentes de 64 KB, sendo dividida a RAM em blocos de 64 KB

Funcionam pelo mapeamento direto, mas a vantagem é poder ter, neste caso, dados de quatro linhas de mesmo número de ordem, ou até o limite do número de unidades que o cache foi dividido;

É como se o computador tivesse neste exemplo quatro caches de 64 KB e cada uma em mapeamento direto.

Page 23: Memória cache

Algoritmos de substituição

Menos recentemente usado (LRU) O primeiro a chegar é o primeiro a sair

(FIFO) Menos frequentemente usado (LFU) Aleatório

Page 24: Memória cache

Menos recentemente usado (LRU)

O bloco a ser substituído é o que está no conjunto que não é usado há mais tempo.

É usado um bit a mais, chamado bit de USO. Oferece melhor taxa de acerto.

Page 25: Memória cache

O primeiro a chegar é o primeiro a sair (FIFO)

Substituição do primeiro bloco do conjunto armazenado na cache.

Facilmente implementado.

Page 26: Memória cache

Menos frequentemente usado (LFU)

O bloco a ser substituído é o menos utilizado.

Sua implementação é feita a partir de um contador a cada linha da memória cache.

Page 27: Memória cache

Aleatório

Não baseada no histórico. Apresenta um desempenho levemente

inferior ao de algoritmos baseados em histórico.

Page 28: Memória cache

Política de escrita

Escrita direta (write-through) Escrita de volta (write-back)

Page 29: Memória cache

Escrita direta (write-through)

A escrita é feita tanto na memória cache quanto na memória principal.

A desvantagem é o trafego de memória considerável, o que compromete o sistema.

Page 30: Memória cache

Escrita de volta (write-back)

Visa minimizar o número de operações. Na atualização é atribuido um bit à variável

ATUALIZAÇÃO. A desvantagem dessa técnica é que partes

da memória principal podem ficar inválidas.

Page 31: Memória cache

PERGUNTAS???

Page 32: Memória cache
Page 33: Memória cache