Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Funcionamento da Memória Cache, Notas de estudo de Arquitetura Computadorizada e Organizacional

Organização e Arquitetura de Computadores - Universidade Federal de Sergipe (UFS).

Tipologia: Notas de estudo

2013

Compartilhado em 20/05/2013

synty-x-12
synty-x-12 🇧🇷

5

(4)

47 documentos

1 / 6

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Organização e Arquitetura de Computadores
Carlos Augusto de S. Almeida
prof . c augusto almeida @gmail.com
Universidade Federal de Sergipe (UFS)
São Cristovão – Sergipe
Abril de 2012
Memória Cache
Roteiro da Aula
2
Problema na Comunicação CPU
Ù
MM
A CPU é muito mais rápida do que a MM.
E essa diferença de velocidade veem aumentando ao longo dos anos, a
CPU tem evoluído mais rapidamente do que a MM.
O acesso a MM para leitura ou escrita, é um dos principais motivos da
menor velocidade de processamento.
O tempo que a CPU espera a MM é conhecido como
wait state (estado de espera).
Front-Side Bus (FSB) = barramento frontal; Back-Side Bus (BSB) = barramento traseiro. 3
Problema na Comunicação CPU
Ù
MM
A CPU é muito mais rápida do que a MM.
E essa diferença de velocidade veem aumentando ao longo dos anos, a
CPU tem evoluído mais rapidamente do que a MM.
O acesso a MM para leitura ou escrita, é um dos principais motivos da
menor velocidade de processamento.
O tempo que a CPU espera a MM é conhecido como
wait state (estado de espera).
Soluções:
1. O processador pode executar outras instruções enquanto aguarda acesso à
memória. Entretanto, isso nem sempre é possível.
2. Colocar a MM dentro do CPU. Mas: (i) a CPU ficaria bem mais; e (ii) bem
mais cara.
3. Usar uma memória intermediaria entre a CPU e a MM, uma memória menor
e mais rápida (com relação a MM), chamada de Memória Cache.
(essa é a solução adotada) 4
Problema na Comunicação CPU
Ù
MM
A CPU é muito mais rápida do que a MM.
E essa diferença de velocidade veem aumentando ao longo dos anos, a
CPU tem evoluído mais rapidamente do que a MM.
O acesso a MM para leitura ou escrita, é um dos principais motivos da
menor velocidade de processamento.
Soluções:
3. Usar uma memória intermediaria entre a CPU e a MM, uma memória menor
e mais rápida (com relação a MM), chamada de Memória Cache.
(essa é a solução adotada)
5
Memória Cache
Princípio da Localidade
Localidade Temporal
Uma posição de memória referenciada recentemente tem boas chances de
ser referenciada n ovamente, em breve.
P.ex. iterações (loops) e recursões (podem ser vistos como loops).
Localidade Espacial
Uma posição de memória vizinha de uma posição referenciada (no
momento) tem boas chances de ser referenciada, em breve.
Dados tendem a ser armazenados em posições contíguas.
6
Princípio da Localidade
7
Memória Cache
Donald J. Hatfield, Jeanette Gerald:
Program Restructuring for Virtual Memory.
IBM Systems Journal 10(3): 168-192 (1971)
Endr. da Memória Principal (1 marca por acesso)
Acesso ao longo do Tempo ===>
Localidade Temporal
Localidade Espacial
Princípio da Localidade
8
Memória Cache
pf3
pf4
pf5

Pré-visualização parcial do texto

Baixe Funcionamento da Memória Cache e outras Notas de estudo em PDF para Arquitetura Computadorizada e Organizacional, somente na Docsity!

Organização e Arquitetura de Computadores

Carlos Augusto de S. Almeida

prof. c augusto almeida @gmail.com

Universidade Federal de Sergipe (UFS)

São Cristovão – Sergipe

Abril de 2012

Memória Cache

Roteiro da Aula

2

Problema na Comunicação CPU Ù MM

  • A CPU é muito mais rápida do que a MM.
    • E essa diferença de velocidade veem aumentando ao longo dos anos, a CPU tem evoluído mais rapidamente do que a MM.
  • O acesso a MM para leitura ou escrita, é um dos principais motivos da

menor velocidade de processamento.

  • O tempo que a CPU espera a MM é conhecido como wait state (estado de espera).
  • Front-Side Bus (FSB) = barramento frontal; Back-Side Bus (BSB) = barramento traseiro. 3

Problema na Comunicação CPU Ù MM

  • A CPU é muito mais rápida do que a MM.
    • E essa diferença de velocidade veem aumentando ao longo dos anos, a CPU tem evoluído mais rapidamente do que a MM.
  • O acesso a MM para leitura ou escrita, é um dos principais motivos da

menor velocidade de processamento.

  • O tempo que a CPU espera a MM é conhecido como wait state (estado de espera).
  • Soluções:
    1. O processador pode executar outras instruções enquanto aguarda acesso à memória. Entretanto, isso nem sempre é possível.
    2. Colocar a MM dentro do CPU. Mas: (i) a CPU ficaria bem mais; e (ii) bem mais cara.
    3. Usar uma memória intermediaria entre a CPU e a MM, uma memória menor e mais rápida (com relação a MM), chamada de Memória Cache. (essa é a solução adotada) 4

Problema na Comunicação CPU Ù MM

  • A CPU é muito mais rápida do que a MM.
    • E essa diferença de velocidade veem aumentando ao longo dos anos, a CPU tem evoluído mais rapidamente do que a MM.
  • O acesso a MM para leitura ou escrita, é um dos principais motivos da

menor velocidade de processamento.

  • Soluções:
    1. Usar uma memória intermediaria entre a CPU e a MM, uma memória menor e mais rápida (com relação a MM), chamada de Memória Cache. (essa é a solução adotada)

5

Memória Cache

Princípio da Localidade

  • Localidade Temporal
    • Uma posição de memória referenciada recentemente tem boas chances de ser referenciada novamente, em breve.
    • P.ex. iterações (loops) e recursões (podem ser vistos como loops).
  • Localidade Espacial
    • Uma posição de memória vizinha de uma posição referenciada (no momento) tem boas chances de ser referenciada, em breve.
    • Dados tendem a ser armazenados em posições contíguas.

6

Princípio da Localidade

Memória Cache

Donald J. Hatfield, Jeanette Gerald: Program Restructuring for Virtual Memory. IBM Systems Journal 10(3): 168-192 (1971)

Endr. da Memória Principal (1 marca por acesso)Acesso ao longo do Tempo ===>

Localidade Temporal

Localidade Espacial

Princípio da Localidade

Memória Cache

Funcionamento da Cache

Leitura de um dado

  • A CPU coloca no AD (Address Bar) o endereço do dado solicitado a MM;
  • O chipset (a controladora da memória) intercepta o endereço solicitado

e verifica se o dado está ou não presente na cache;

  • Se estiver, acerto ( hit ) => uma cópia do dado é transferida da cache para a

CPU via DB ( Data Bar );

  • Senão estiver, falta ( miss ) => o chipset solicita o dado a MM, que é

transferido para a cache, e somente em seguida a cópia do dado é

transferida para a CPU;

  • Tempo de acesso é bem maior.

9

Memória Cache

chipset chipset

Funcionamento da Cache

10

Memória Cache

Fluxograma: Acesso a Memória envolvendo Cache

Funcionamento da Cache

11

Memória Cache

Organização típica da Mem. Cache

Organização da Cache Memory

  • A MM ( Primary Memory ) é formada por:
    • N células de um byte cada (em geral);
    • Que são agrupadas em palavras;
    • Que por sua vez são agrupadas em blocos de K palavras.
  • A CM ( Cache Memory ) é formada por:
    • m blocos, chamados de linhas;
    • 1 linha CM = 1 bloco da MM + tag + dados de controle.
    • Tamanho Cache << Tamanho MM

Memória de 64 MB^12

1 Palavra de 4 bytes

1 Célula de (^0) Memória

N-

1 Bloco de 2 palavras

Endr 0007H

Endr 0006H

Endr 0000H Endr 0001H Endr 0002H Endr 0003H Endr 0004H Endr 0005H

... Endr FFFF (^) H

Funções de Mapeamento

  • Como existem menos linhas na Cache do que na MM, é necessário haver um algoritmo para mapear as linhas da Cache com os blocos da MM.
  • Esse algoritmo diz para cada bloco da MM qual a linha da Cache ele irá ocupar.
  • Logo, a escolha do algoritmo de mapeamento diz como a CM ( Cache Memory ) será organizada.
  • Existem, basicamente, 3 técnicas de mapeamento:
    • Mapeamento Direto
    • Mapeamento Associativo
    • Mapeamento Associativo em Conjunto

13

Formato da Linha de Cache

  • Para saber qual bloco da MM a linha da Cache está guardando, uma tag (ou núm. do bloco da MM) contendo o núm do bloco da MM tb é guardado na Linha da Cache.
  • Para saber se a Linha de Cache está ocupada ou contém lixo, é usado um bit de validade (1 válido, 0 lixo).
  • Como os dados alterados na cache NÃO precisam ser imediatamente escritos na MM, a Linha de Cache tb mantém um bit sujo, para indicar que os dados ali contido precisam ser atualizados na MM antes do Bloco ser substituído.
  • Linha de Cache = [bit de validade] [bit sujo] [tag] [dado]

14

Questões de Projeto da Cache Memory

  • Qual será
    • A função de mapeamento de dados PM/Cache?
    • O algoritmo de substituição de dados na cache?
    • A politica de escrita de dados na cache?
    • O tamanho da cache?
    • O tamanho da largura de linhas da cache?
      • Isto é, quantas palavras cabem em 1 linha da cache.
  • Quantos níveis de cache serão usados?

Mapeamento Direto

  • Forma mais simples de mapeamento;
  • A posição do bloco da MM na CM depende do endereço da palavra;
  • Cada palavra está associada a uma única posição na Cache;
  • Este mapeamento é dado através da função NumLinhaCache := NumBlocoMM módulo TotalLinhasCache
  • P.ex. NumTotalLinhas = 4 Bloco 0 => Linha 0 Bloco 1 => Linha 1 ... Bloco 8 => Linha 0 Bloco 9 => Linha 1 Bloco 10 => Linha 2 Bloco 11 => Linha 3 ...
  • Formato Endr: [tag] [linha] [palavra]

Funções de Mapeamento

Mapeamento Associativo

  • Mapeamento Associativo == Mapeamento Associativo Completo
  • Não existe uma posição fixa, pré-determinada para o Bloco da MM na Linha

de Cache;

  • Logo, não existe o campo endr. da linha de cache: [tag] [linha de cache] [palavra]. Ao invés disso: [tag] [palavra].
  • Um bloco da MM pode ser armazenado em qualquer linha de cache;
  • Requer um algoritmo para escolher qual linha de cache receberá o bloco da

MM, que é conhecido como a política de substituição de linhas da cache;

  • P.ex. NumTotalLinhas = 4 Bloco 0 => Linha definida pelo algoritmo Bloco 1 => Linha definida pelo algoritmo ...
  • Formato Endr: [tag] [palavra]
  • Desvantagens
    • O circuito é bem mais complexo e caro $$$. 25

Funções de Mapeamento

Mapeamento Associativo: Acesso a Cache

26

Funções de Mapeamento

  • [Leitura] Supondo que houve acerto ( hit )

Endr. vindo da CPU: 1

3

2

5

6

Retorna o dado

4

Mapeamento Associativo: Acesso a Cache

27

Funções de Mapeamento

  • [Leitura] Supondo que houve falha ( miss )

Endr. vindo da CPU:

(^76)

Retorna o dado

5

1

3

2

4

Mapeamento Associativo

  • Ex.: Supondo uma MM construída com blocos de 32B, sendo CM = 128KB. Assuma que o endr. 3FC92B6 é válido para essa MM, e que a MM é endereçável por byte, onde tam. célula = tam. palavra. a. Determine o formato da Linha de Cache?

Solução : a. CM = 128KB tam. do bloco = 32B largura do endr. em bits :: 3FC92B6 possui 7 algoritmos em hexa, = 7 * 4 => 28 bits total do endr núm. de células por bloco = tam. do bloco / tam. da célula => 32 / 1 => 32 células por bloco => logo, larg. da célula = 5 bits [tag: 23bits] [palavra: 5bits] = [endr: 28bits]

28

Funções de Mapeamento

Mapeamento Associativo por Conjunto

  • Mapeamento Associativo por Conjunto

== Mapeamento Associativo por Conjunto de N

  • Combina as vantagens:
    • (i) do mapeamento direto
      • Resolve o problema de mapear muitos Blocos p/ uma mesma Linha de Cache.
    • (ii) do mapeamento associativo (reduzindo suas desvantagens)
      • Ameniza o problema do custo de comparação das tags.
  • A posição do Conjunto de Blocos é fixa na Cache, mas um bloco do Conjunto

pode ocupar qualquer Linha de Cache desse

Conjunto.

  • A CM é div. em c conjuntos de k Linhas cada.

A MM é div. em m conjuntos de k Blocos cada.

  • Formato Endr: [tag] [conjunto] [palavra]

29

Funções de Mapeamento

Map. Assoc. por Conj.: Acesso a Cache

30

Funções de Mapeamento

  • [Leitura] Supondo que houve acerto ( hit )

Endr. vindo da CPU:

1

3

Retorna o dado

4

2

5

7 6

Mapeamento Associativo por Conjunto

  • Ex.: Supondo uma MM construída com blocos de 32B, sendo CM = 128KB. Assuma que o endr. 3FC92B6 é válido para essa MM, e que a MM é endereçável por byte, onde tam. célula = tam. palavra. A cache usa mapeamento por conjunto de 4 Linhas. a. Determine o formato da Linha de Cache? Solução : a. CM = 128KB tam. Bloco = 32B largura do endr. em bits :: 3FC92B6 possui 7 algoritmos em hexa, = 7 * 4 => 28 bits total do endr núm. células por Bloco = tam. Bloco / tam. Célula => 32 / 1 => 32 células por Bloco => logo, larg. da Célula = 5 bits núm. Linhas = tam. Cache / tam. Linha => 128 * 2 10 B (128KB) / 32B => 2 12 Linhas núm. Conjuntos = num. Linhas / tam. Conjunto => 2 12 / 2 2 (4) => 2 10 Conjuntos => larg. endr. p/ Conjunto = 10 bits [tag: 13bits] [conjunto: 10bits] [palavra: 5bits] = [endr: 28bits]

Funções de Mapeamento

Mapeamento Associativo por Conjunto

  • Geralmente, os sistemas usam 4, 8, ou 16 Linhas de Cache por Conjunto;
  • Quando maior for o tam. da cache, maior será o tam. do conjunto, para

manter as vantagens do métodos de:

  • Mapeamento Direto: facilidade de identificação da Linha de Cache;
  • Mapeamento Associativo: melhor aproveitamento das Linha de Cache;

Funções de Mapeamento

Política de Substituição das Linhas de Cache

  • Determina qual Linha de Cache deve sair, ser substituída pelo Bloco da

MM desejado.

  • A Política de Substituição é necessária para o Mapeamento Associativo.
  • Algoritmos mais difundidos:
    • LRU ( Least Recently Used , Menos Recentemente Usado)
      • Escolhe a Linha que não é usada há mais tempo
    • LFU ( Least Frequently Used , Menos Frequentemente Usado)
      • Escolhe a Linha com menor frequência de uso (a menos usada)
    • FIFO ( Fist-In First-Out , Primeiro a Entrar Primeiro a Sair)
      • Escolhe a Linha mais antiga (a Primeira que entrou na Cache)
    • Escolha Aleatória
      • Escolhe aleatoriamente qualquer Linha de Cache

33

Política de Substituição das Linhas de Cache

LRU ( Least Recently Used , Menos Recentemente Usado)

  • Escolhe o Linha que não é usada a mais tempo.
  • Um contador é mantido em cada Linha de Cache, para indicar o momento

de seu uso.

  • Problema no caso do mapeamento associativo por conjunto :
    • Como ?? implementar uma forma simples e rápida de descobrir a Linha

do Conjunto da CM será substituída;

  • O processamento deve ser mínimo, e todo feito em hardware. O mínimo de gasto com processamento já inviabiliza o algoritmo.

LFU ( Least Frequently Used , Menos Frequentemente Usado)

  • Escolhe a Linha com menor frequência de uso (a menos usada).
  • É similar a LRU, possui até mesmo problemas similares.
  • Na prática, o LRU se mostrou melhor que o LFU.

34

Política de Substituição das Linhas de Cache

  • FIFO ( Fist-In First-Out , Primeiro a Entrar Primeiro a Sair)
    • Escolhe a Linha mais antiga (a Primeira que entrou na Cache)
    • Dentre os 4 algoritmos apresentados, é o que possui piores resultados.
  • Escolha Aleatória
    • Escolhe aleatoriamente qualquer Linha de Cache
    • Simples de implementar em hardware, e eficiente.
    • Estudos mostraram, que sua eficácia é ligeiramente menor que o LRU,

mas possui implementação muito mais simples, o que compensa seu uso.

35

Política de Escrita das Linhas de Cache

  • É o mesmo que: Política de Atualização da Cache
  • Write Through : escrita em ambas
    • Escreveu na Cache, tb escreve na MM;
    • No caso de CPUs multi-core com Cache não-compartilhada, a Linha de

Cache atualizada, tb é escrita nas caches dos outros Cores (núcleos);

  • Mantém ambas as memórias atualizadas.
  • Write Back: escrita na volta
  • A Linha suja (isto é, atualizada) só é escrita na MM antes de ser

substituída.

  • Write Once: escrita uma vez
    • Combina Write Though com Write Back.
    • Usada em CPUs multi-core com Cache não-compartilhada.

36

Política de Escrita das Linhas de Cache

  • É o mesmo que: Política de Atualização da Cache
  • Write Through : escrita em ambas
  • Write Back: escrita na volta
  • Write Once: escrita uma vez
    • Apropriada para CPUs multi-core com Cache não-compartilhada;
    • Combina write through com write back ;
    • A primeira atualização da Linha de Cache é escrita na MM ( write

throught ), mas as atualizações subsequentes NÃO são. Somente quando

a Linha for substituída é que ocorre a atualização da MM ( write back ).

  • Como a palavra modificada tb pode estar presente na Cache dos outros

núcleos. Para impedir seu acesso ou modificação, a primeira atualização

da Linha, tb bloqueia essa palavra nas outras Caches.

37

Níveis de Cache

  • L1 (Level 1, Nível 1)
  • L2 (Level 2, Nível 2)
  • L3 (Level 3, Nível 3)
  • Hj, já existem CPUs com 3 níveis de Cache internas (L1, L2, e L3 internas).

38

Tamanho da Cache Memory

  • O tamanho da CM deve ser:
    • Suficientemente Pequeno para que o custo total médio por bit seja próximo ao custo por bit da MM;
    • Suficientemente Grande para que o tempo médio de acesso à memória seja próximo ao tempo de acesso da CM.
  • O tam. da memória tb está limitado pelo tamanho da pastilha e da placa

de circuito;

  • Teoria Keciana e Monoeslística: "quanto maior é a CM, maior será o

número de portas envolvidas no seu endereçamento"

maior núm. de portas > maior custo $$

  • Hoje, já existem processadores com até 42 MB de Cache,

os Mainframes da IBM :-o

  • Largura da Linha da Cache Memory

Tamanho da Cache Memory

  • A Largura da Linha de Cache deve ser:
    • Suficientemente Grande para tirar proveito do Princípio da Localidade;
    • Suficientemente Pequeno para não desperdiçar a Linha de Cache com

dados que não seguem o Princípio da Localidade, dados não serão

referenciados em conjunto com outros.