Informática

Hierarquia de memória, cache e desempenho da CPU com cálculos

Por que um computador tem registradores, cache, memória principal e disco, em vez de um único tipo de memória? Porque velocidade, capacidade e custo não se combinam: o rápido é caro e pequeno; o barato é grande e lento. A hierarquia de memória organiza esses níveis para dar a impressão de uma memória grande e rápida. Provas de informática e de arquitetura de computadores cobram a ordem dos níveis e, às vezes, contas simples de desempenho, todas conferidas aqui por cálculo. Os componentes básicos estão em hardware e software: conceitos básicos.

A pirâmide de memória

Do topo (mais rápido, menor, mais caro por byte) à base:

Nível Característica Volátil?
Registradores dentro do processador; acesso mais rápido sim
Cache (L1, L2, L3) memória pequena e muito rápida entre o processador e a memória principal; L1 é a mais rápida e menor, e os níveis seguintes crescem em tamanho e latência sim
Memória principal (RAM) guarda programas e dados em uso sim
Armazenamento secundário (SSD, HD) grande, lento, guarda dados de forma persistente não
Armazenamento terciário e cópias (fitas, nuvem) arquivo e backup não

Regra de ouro: quanto mais perto do processador, mais rápida, menor e mais cara por byte; quanto mais distante, mais lenta, maior e mais barata. A RAM é volátil: perde o conteúdo sem energia. Memórias ROM e flash são não voláteis; a flash é a base do SSD.

Tipos de RAM, em linhas gerais

  • SRAM: estática, mais rápida e cara, usada em caches.
  • DRAM: dinâmica, precisa ser periodicamente reenergizada (“refresh”), mais barata e densa, usada como memória principal.

Por que a cache funciona: localidade

Os programas tendem a reutilizar o que usaram há pouco (localidade temporal) e a acessar dados vizinhos aos recentes (localidade espacial, por exemplo percorrer um vetor). A cache guarda blocos de memória recentes, aproveitando essas duas tendências.

  • Acerto (hit): o dado está na cache.
  • Falha (miss): o dado não está; é preciso buscá-lo no nível seguinte.
  • Taxa de acertos (h): fração dos acessos que são acertos. A taxa de falhas é 1 - h.

Tempo médio de acesso

O cálculo cai em prova, e a pegadinha é que existem duas fórmulas conforme o enunciado.

Fórmula 1 (o tempo de falha é o tempo total para obter o dado na memória principal):

tempo médio = h x t_cache + (1 - h) x t_memória

Fórmula 2 (a cache é sempre consultada primeiro; a falha acrescenta o tempo da memória):

tempo médio = t_cache + (1 - h) x t_memória

Exemplo: cache com 2 ns, memória principal com 100 ns e taxa de acertos h = 0,9.

Fórmula Conta Resultado
1 0,9 x 2 + 0,1 x 100 11,8 ns
2 2 + 0,1 x 100 12,0 ns

A taxa de acertos pesa muito. Com os mesmos tempos e a fórmula 1:

Taxa de acertos (h) Tempo médio
0,90 11,8 ns
0,95 6,9 ns
0,99 2,98 ns

Subir a taxa de acertos de 0,90 para 0,99 reduz o tempo médio de 11,8 para quase 3 ns, porque cada falha custa cinquenta vezes mais que um acerto. O enunciado costuma indicar qual modelo usar; na falta, leia as palavras: “a cache é acessada primeiro, e a falha acrescenta o acesso à memória” sugere a fórmula 2.

Mapeamento e substituição

Como saber em que linha da cache um bloco da memória fica? Três formas:

Mapeamento Ideia
Direto cada bloco só pode ir para uma posição fixa; simples, mas sujeito a conflitos
Associativo o bloco pode ir para qualquer posição; flexível e mais caro
Associativo por conjuntos o bloco vai para um conjunto e, dentro dele, para qualquer posição; meio-termo muito usado

Quando a cache enche, uma política de substituição escolhe a vítima (como LRU, já vista em substituição de páginas). Na escrita, a política write-through grava ao mesmo tempo na cache e na memória; a write-back grava só na cache e leva o dado à memória quando o bloco é substituído.

Desempenho do processador

Três grandezas se combinam:

  • Instruções (I): quantas instruções o programa executa.
  • CPI: ciclos por instrução (média).
  • Frequência (f): ciclos por segundo, ou seu inverso, o período do ciclo.

tempo de CPU = I x CPI / f

Exemplo: um programa com 2 bilhões de instruções, CPI médio de 1,5 e processador de 3 GHz (3 bilhões de ciclos por segundo):

tempo = 2.000.000.000 x 1,5 / 3.000.000.000 = 1,0 segundo.

A taxa de instruções por segundo é f / CPI = 3.000 / 1,5 = 2.000 milhões de instruções por segundo (2.000 MIPS). Ponto cobrado: frequência alta não significa, por si só, desempenho maior: um processador de frequência menor com CPI menor pode ser mais rápido. E mais núcleos ajudam apenas quando o programa consegue dividir o trabalho em paralelo.

Lei de Amdahl

Melhorar uma parte do sistema tem efeito limitado pela fração que não melhorou. Se uma fração p do tempo pode ser acelerada por um fator s:

ganho total = 1 / ((1 - p) + p / s)

Exemplo: a fração p = 0,6 do tempo acelerada 4 vezes (s = 4): ganho = 1 / (0,4 + 0,15) = 1 / 0,55 ≈ 1,82. Não é 4, nem perto. No limite, com aceleração infinita da parte p = 0,5, o ganho máximo seria 1 / 0,5 = 2. Lição: o gargalo é a parte que não melhora; é o argumento contra supor que dobrar núcleos dobra o desempenho.

Armazenamento: HD x SSD

Aspecto HD SSD
Tecnologia discos magnéticos com partes móveis memória flash, sem partes móveis
Acesso latência maior (movimento mecânico) latência muito menor
Resistência a choque menor maior
Custo por capacidade historicamente menor historicamente maior

Para unidades de capacidade e conversões, veja sistema binário, bits, bytes e unidades, e para redundância de discos, RAID.

Erros comuns

  • Inverter a ordem da pirâmide (colocar a RAM acima da cache).
  • Dizer que cache é memória secundária ou persistente.
  • Usar a fórmula errada do tempo médio sem ler o enunciado.
  • Achar que o dobro da frequência dobra o desempenho.
  • Esquecer que a lei de Amdahl limita o ganho pela parte não acelerada.
  • Confundir cache de processador com cache de navegador (a de navegador é cópia local de arquivos da web).

Fontes e atualização

Não há norma oficial brasileira sobre arquitetura de computadores; o conteúdo segue a literatura clássica da área. Todos os cálculos foram conferidos por execução. Tamanhos típicos de cache e termos como L1, L2 e L3 variam entre produtos: confira o edital.

Próximos passos

Leia também

Para continuar no site

Viu algo errado, desatualizado ou confuso? Relatar erro nesta página