Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor...

32
Memória cache Prof. Francisco Adelton

Transcript of Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor...

Page 1: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Memória cache

Prof. Francisco Adelton

Page 2: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Memória Cache

Seu uso visa obter uma velocidade de acesso à memória próxima da velocidade das memórias mais rápidas e, ao mesmo tempo, disponibilizar no sistema uma memória de grande capacidade, a um custo equivalente ao das memórias de semicondutor mais baratas.Contém uma cópia de parte da memória principal. Quando o processador deseja ler uma palavra da memória, é realizado um teste para se a palavra está na memória cache. Se estiver, ela é fornecida ao processador. Caso contrário, um bloco de dados da memória principal, constituído de um número fixo de palavras, é lido para a memória cache e em seguida a palavra requerida é entregue ao processador.

Page 3: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Memória Cache

– Objetivo - Simular a existência de uma memória de grande capacidade e alta velocidade para a CPU.

– Operação - Manter em uma memória de pequena capacidade e alta velocidade cópias das posições que mais provavelmente serão acessadas na MP.

Page 4: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

conceitos básicos

Princípio da proximidade: Programas tendem a reutilizar os dados e as instruções usados recentemente. Existem 2 tipos de proximidade:– proximidade temporal: Num futuro próximo, o

programa irá referenciar os programas e dados referenciados recentemente;

– proximidade espacial: Num futuro próximo, o programa irá referenciar os programas e objetos de dados que tenham endereços próximos das últimas referências.

Page 5: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

• Como memória rápida é cara, a memória égeralmente organizada numa hierarquia de vários níveis: cada nível tem menor capacidade, é mais rápido e mais caro que o seguinte.

• Freqüentemente cada nível está contido no seguinte (mas nem sempre).

• A hierarquia de memória também éresponsável pela verificação de endereços (jáque tem de mapear endereços nos níveis corretos).

• A importância da hierarquia de memória tem aumentado com os avanços de CPU.

Page 6: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Uma hierarquia de memória simples

Page 7: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Termos• Cache hit—CPU encontra item na cache (acerto).• Cache miss—CPU não encontra item na cache (falha).• Bloco - conjunto de dados (de tamanho fixo) que é obtido de

memória e colocado em cache (contém o item pedido).• A proximidade temporal implica que o item será utilizado de

novo dentro de pouco tempo.• A proximidade espacial implica que haja uma probabilidade

elevada de que os outros dados do bloco sejam usados dentro de pouco tempo.

• O tempo necessário para processar uma falha depende da latência e da largura de banda da memória.– A latência determina o tempo necessário para obter o primeiro elemento

do bloco.– A largura de banda determina o tempo necessário para obter o resto do

bloco.

Page 8: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Termos

• Write-through (escrita direta), quando o processador precisa armazenar dados na memória – o controlador de cache de memória atualizava a memória RAM imediatamente.

• Write back” (contra-escrita), as operações de escrita a memória RAM não é atualizada imediatamente, o processador armazena os dados no cache de memória e o controlador de memória atualiza a memória RAM apenas quando ocorrer um erro do cache.

Page 9: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Níveis de Cache

• Nível 1 (L1): Localizada no interior do núcleo do processador, trabalha na velocidade de clock do sistema, e é a primeira a ser consultada pela CPU. Pode estar dividida em Cache de Instruções e de Dados. Ex: AMD Athlon: 128KB divididos (64KB instruções + 64KB dados).

• Nível 2 (L2): Antigamente localizada na placa-mãe do computador, atualmente é construída dentro da mesma pastilha do processador (a partir do Pentium 3). Possui menor velocidade e maior capacidade que a L1. Tamanho típico de 512KB

Page 10: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Níveis de Cache

• Nível 3 (L3): Existente apenas em alguns sistemas, é atualmente integrada ao processador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a CacheL2, com tamanho típico de 1 a 2MB.

• Front Side Bus (FSB): Barramento de conexão entre a MP e a CPU (localizado na placa-mãe).

• Back Side Bus (BSB): Barramento de conexão entre a Cache L2 e a CPU (localizado dentro do invólucro do processador).

Page 11: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Mapeamento de Dados entre MP e Cache

Capacidade da MP muito maior do que a Cache => Somente partes da MP podem ser carregadas na Cache.

Problema: Como saber se um determinado dado (ou instrução) está carregado na Cache?Solução: Mapeamento Traduzir endereços da MP para a Cache.

Page 12: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Organização do Cache de Memória

• O cache de memória é divido internamente em linhas, cada uma podendo guardar de 16 a 128 bytes, dependendo do processador. Na maioria dos processadores atuais o cache de memória está organizado em linhas de 64 bytes (512 bits), portanto consideraremos um cache de memória usando linhas de 64 bytes em nossos exemplos dados nesta aula.

Page 13: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Organização do Cache de Memória

• Portanto, um cache de memória L2 de 512 KB é dividido em 8.192 linhas. Lembre-se que 1 KB é igual a 2^10 ou 1.024 bytes. A conta é a seguinte: 524.288 / 64 = 8.192.

• Consideraremos um processador de um único núcleo com 512 KB de memória cache L2 em nossos exemplos.

Page 14: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Organização do Cache de Memória

Page 15: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Memórias

Tag: informa qual linha da mem. principal está armazenada na linha de cache correspondente.

Page 16: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Tipos de mapeamentos

• Para efetuar a transferência de um bloco de dados da MP para uma linha da Cache, pode-se utilizar três tipos de mapeamento:– Direto;– Associativo;

– Associativo por Grupos;

Page 17: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Mapeamento Direto• Neste tipo de organização, há apenas uma posição no

cache para onde um item de dado pode ser transferido.• As vantagens deste tipo de organização incluem:

– Simplicidade de hardware, e conseqüentemente custo mais baixo;– Não há necessidade de escolher uma linha para ser retirada do

cache, uma vez que há uma única opção. Isto dispensa a implementação de um algoritmo de troca de linhas;

– Operação rápida• Apesar de simples, esta estratégia é pouco utilizada devido

à sua baixa flexibilidade. Como há apenas uma posição no cache onde o item solicitado pode estar localizado, a probabilidade de presença no cache hit pode ser baixa. Assim, pode haver queda sensível no desempenho em situações onde o processador faz referências envolvendo itens que são mapeados para uma mesma posição do

• cache.

Page 18: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Exemplo

• Se tivermos um micro com 1 GB de memória RAM, esse 1 GB será dividido em 8.192 blocos (assumindo que o cache de memória use a configuração que descrevemos acima), cada um com 128 KB (1.073.741.824 / 8.192 = 131.072 –lembre-se que 1 GB é igual a 2^30 bytes, 1 MB é igual a 2^20 bytes e 1 KB é igual a 2^10 bytes). Se o micro tivesse 512 MB a memória também seria dividida em 8.192 blocos, mas desta vez cada bloco teria 64 KB. E assim por diante.

Page 19: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Mapeamento Direto

Page 20: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Exercício

• Suponha uma MP com espaço de endereçamento de 4G células, tendo cada uma um endereço de 32 bits (232 = 4G).

• Assuma que a Memória Cache associada a esta MP possui uma capacidade de armazenamento de 64KBytes, divididos em 1024 linhas, com capacidade de 64 Bytes por linha (64KBytes/1024 linhas = 64 Bytes por linha).

• Cada linha da Cache deverá acomodar quantos blocos da MP (um de cada vez)?

Page 21: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

• Neste esquema, os blocos da MP não possuem um Quadro da Cache fixado previamente para o seu armazenamento.

• Neste caso, o endereço da MP é dividido em 2 campos:

• Deslocamento: Os mesmos 6 bits menos significativos utilizados para localizar o conteúdo de uma célula dentro do bloco armazenado.

• Tag: Identifica o endereço completo do bloco da MP. Como a MP foi dividida em 64M Blocos (B= 64M), o número de bits atribuído para o campo Tag deve ser suficiente para endereçar todos os blocos (226 = 64M).

Page 22: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Operação de Leitura na Cachecom Mapeamento Associativo

• Em caso positivo, o conteúdo da célula desejada élocalizado dentro do bloco através dos 6 bits de Deslocamento, e então transferido para a CPU.

• Em caso negativo, o endereço do bloco (Tag) éutilizado para localizar o bloco desejado na MP e trazê-lo até a Cache, substituindo um bloco anteriormente carregado.

• Problema: Qual bloco já carregado na Cachedeverá dar lugar ao novo bloco a ser carregado? Depende do Algoritmo de Substituição utilizado.

Page 23: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Conclusão sobre o Mapeamento Associativo

• Esta técnica de mapeamento evita o problema da fixação dos blocos aos Quadros da Cacheque ocorre no Mapeamento Direto. Por outro lado, exige uma lógica mais complexa na Cache, de modo a examinar rapidamente cada campo Tag de todas as linhas da Cache.

• Existe ainda o problema do desenvolvimento de um algoritmo de substituição adequado para a troca dos blocos carregados na Cache.

Page 24: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Cache Associativo por Grupos de n-vias

• Nesta configuração o cache de memória édividido em vários blocos (grupos) contendo “n” linhas cada.

• Dessa forma em um cache associativo por grupos de 4 vias o cache de memória terá2.048 blocos contendo quatro linhas cada (8.192 linhas / 4). Aqui nós estamos continuando com o nosso exemplo de um cache L2 de 512 KB dividido em 8.192 linhas de 64 bytes. Dependendo do processador o número de blocos será diferente.

Page 25: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Cache Associativo por Grupos de n-vias

Page 26: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Exemplo

• A memória RAM é dividia no mesmo número de blocos disponível no cache de memória. Continuando o exemplo do cache de 512 KB Associativo por grupos de 4 vias, a memória RAM seria dividida em 2.048 blocos, o mesmo número de blocos disponível dentro do cache de memória. Cada bloco da memória serávinculado a um conjunto de linhas dentro do cache, da mesma forma que no cache com mapeamento direto. Com 1 GB de memória RAM, a memória seria dividida em 2.048 blocos com 512 KB cada.

Page 27: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Exemplo

Page 28: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Cache Associativo por Grupos de n-vias

• Como você ver o mapeamento é similar ao que acontece com o cache com mapeamento direto, a diferença é que para cada bloco de memória existe agora mais de uma linha disponível no cache de memória. Cada linha pode armazenar o conteúdo de qualquer endereço dentro do bloco mapeado. Em um cache Associativo por grupos de 4 vias cada grupo no cache de memória pode armazenar até quatro linhas do mesmo bloco de memória.

Page 29: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

TAMANHO DA MEMÓRIA CACHE

• A escolha do tamanho do bloco na memória cache é uma decisão de compromisso. Blocos grandes tendem a aumentar a taxa de acerto mas possuem os seguintes incovenientes:– Pode diminuir a taxa de acerto global por não

permitirem a convivência simultânea de muitos blocos na cache.

– Em caso de leitura com falhas o tempo de acesso em geral aumenta, pois mais informações precisam ser lidas na MP. Perde-se tempo de transferência.

– Blocos grandes podem acarretar a ocupação desnecessária do cache com informações que nunca serão utilizadas.

Page 30: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

Exercício

1. Cache de Memória L2 nos Processadores Multi-Núcleos:

– Nos processadores com mais de um núcleo a arquitetura do cache L2 varia muito, dependendo do processador. Faça um comparativo entre as atuais soluções de cache de memória L2 presentes nos processadores de núcleos múltiplos(fabricantes Intel e AMD).

2. O que acontece:– Se usando um cache L2 de 512KB, se nós

aumentássemos o cache para 1 MB (a única maneira de fazer isso seria substituindo o processador), quantas linhas de 64 bytes teríamos no cache de memória? Qual o total de grupos com quatro linhas cada?A RAM de 1 GB seria dividida em X blocos de quantos KB?

Page 31: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

POLÍTICAS PARA SUBSTITUIÇÃO DE BLOCOS NA MEMÓRIA CACHE

(Não se aplica ao mapeamento direto pois não se tem escolha onde alocar o dado)

Os esquemas de mapeamento totalmente associativo ou associativo por conjunto exige uma política de substituição de blocos exigem uma política de substituição de blocos na memória cache.

• Algumas dessas políticas são:– Randômica: Um bloco é escolhido aleatoriamente para ser substituído.

Política de fácil implementação, mas gera problemas de desempenho em esquemas totalmente associativo. Pode descartar um dado que seria utilizado em seguida.

– FIFO - (First In First Out) O bloco que está a mais tempo no cache ésubstituído. Menos simples de implementar e pode gerar problemas de desempenho se o bloco mais antigo estiver sendo ainda muito utilizado.

– LRU - (Least Recently Used) Substitui-se o bloco que há mais tempo não é utilizado. É o esquema com o melhor desempenho e sua implementação é a mais complicada. Um bit na cache marca se ela foi ou não utilizada em cada tic do clock (Não é utilizado na prática pois consome memória cache para armazenar tais informações).

Page 32: Memória cache - simepi.org.br fileprocessador (Ex: Intel Xeon), e possui maior capacidade e menor velocidade que a Cache ... um cache de memória L2 de 512 KB é dividido em 8.192

ABORDAGENS PARA MELHORAR O DESEMPENHO DA CACHE

• Reduzir a taxa de "miss" aumentando a probabilidade de "hit"

• Reduzir o tempo de acesso em caso de "hit"• Utilizar o write-buffer (Buffer para escrita) para evitar

que o processador aguarde a escrita na MP no modo write through

• Utilizar a cache de instruções e dados separados para possibilitar acessos simultâneos no cachje pelo processador

Obs: Blocos são como páginas. Só se pega na MP bloco a bloco, mesmo que o primeiro bloco sócontenha metade da informação que você deseja.

Write Buffer é um cache separado só para escrita. Economiza tempo de acesso.