Memórias

Tipos de memória e unidades de armazenamento

Organização de Computadores

O que é memória?

Memória é qualquer dispositivo capaz de armazenar informação (dados e instruções) para uso imediato ou futuro pelo computador.

Nenhuma tecnologia de memória é, ao mesmo tempo, rápida, barata e de grande capacidade. Por isso o computador combina vários tipos em uma hierarquia: pouca memória rápida e cara perto da CPU, muita memória lenta e barata mais distante.

Três parâmetros descrevem qualquer memória: tempo de acesso (latência), capacidade (quanto armazena) e custo por bit.

A Hierarquia de Memória

Registradores
Cache (L1, L2, L3)
Memória Principal (RAM)
SSD / Disco Rígido
Backup / Nuvem / Fita

Quanto mais perto do topo:

  • mais rápido o acesso;
  • mais caro por bit;
  • menor a capacidade.

O princípio da localidade de referência (dados usados recentemente tendem a ser usados de novo) faz essa hierarquia funcionar muito bem.

Volátil x Não-volátil

Volátil

Perde o conteúdo quando a energia é cortada. Usada para trabalho temporário.

Exemplos: RAM (DRAM, SRAM), registradores, cache.

Não-volátil

Mantém o conteúdo sem energia. Usada para armazenamento permanente.

Exemplos: ROM, SSD, HD, pendrive, cartão SD, DVD.

Memória RAM

RAM (Random Access Memory — memória de acesso aleatório) permite ler/escrever qualquer posição diretamente, no mesmo tempo. É a memória de trabalho do computador: volátil e de leitura/escrita.

TipoCaracterísticaUso típico
SRAM (estática)Muito rápida, cara, não precisa de refreshMemória cache
DRAM (dinâmica)Mais lenta e barata, precisa de refresh periódicoMemória principal
SDRAM / DDRDRAM sincronizada com o clock; DDR transfere 2 dados por cicloPentes de memória (DDR4, DDR5)

"Acesso aleatório" não significa desordenado: significa que o tempo para acessar qualquer endereço é o mesmo, ao contrário de uma fita, onde é preciso percorrer sequencialmente.

Memória ROM e variantes

ROM (Read Only Memory) é não-volátil e guarda informações que raramente mudam, como o firmware de inicialização (BIOS/UEFI).

TipoPode ser regravada?
ROMNão — gravada na fabricação
PROMUma única vez, pelo usuário
EPROMSim — apagada por luz ultravioleta
EEPROMSim — apagada eletricamente, byte a byte
FlashSim — EEPROM rápida, apagada em blocos (base de SSDs e pendrives)

Memória Cache

A cache é uma memória pequena e muito rápida (SRAM) que fica entre a CPU e a RAM. Ela guarda cópias dos dados mais usados para evitar o acesso lento à memória principal.

  • L1: a menor e mais rápida, dentro de cada núcleo.
  • L2: maior, um pouco mais lenta.
  • L3: grande, compartilhada entre os núcleos.

Hit = o dado estava na cache (ótimo). Miss = não estava, precisa buscar na RAM (lento). Uma alta taxa de acerto é o que faz a cache valer a pena.

Armazenamento Secundário

Memória não-volátil de grande capacidade para guardar arquivos e programas de forma permanente.

TecnologiaComo funcionaVelocidade
HD (disco rígido)Discos magnéticos girando + cabeça de leituraLento (partes móveis)
SSDMemória flash, sem partes móveisRápido
NVMeSSD ligado direto ao barramento PCIeMuito rápido
Óptico (CD/DVD/Blu-ray)Leitura por laser de sulcos na superfícieLento
Fita magnéticaAcesso sequencialMuito lento (backup)

A menor unidade: bit e byte

O bit (binary digit) é a menor unidade de informação: vale 0 ou 1.

Um conjunto de 8 bits forma um byte, que pode representar 28 = 256 valores diferentes — o suficiente para um caractere.

4 bits = 1 nibble (meio byte).

1 bit  → 0 ou 1
1 nibble → 4 bits
1 byte  → 8 bits

'A' = 0100 0001
= 1 byte

Unidades de Armazenamento

UnidadeEquivale a
1 Byte (B)8 bits
1 Kilobyte (KB)1024 bytes
1 Megabyte (MB)1024 KB
1 Gigabyte (GB)1024 MB
1 Terabyte (TB)1024 GB
1 Petabyte (PB)1024 TB

1000 ou 1024? Tradicionalmente usa-se 1024 (potência de 2). O padrão SI define KB = 1000 bytes e cria os prefixos binários KiB, MiB, GiB (1024) para evitar confusão.

É por isso que um HD de "1 TB" mostra ~931 GB no sistema operacional: o fabricante usa 1000, o SO usa 1024.

Aprofundamento: o princípio da localidade

A hierarquia de memória só funciona por causa de uma propriedade empírica dos programas reais: a localidade de referência. Ela tem duas formas:

Localidade temporal

Um dado acessado agora tende a ser acessado de novo em breve. Ex.: a variável contadora de um laço, lida e escrita a cada iteração.

Localidade espacial

Se um endereço é acessado, os vizinhos provavelmente serão também. Ex.: percorrer um vetor ou executar instruções em sequência.

Por isso a cache não traz apenas o byte pedido, e sim um bloco inteiro (tipicamente 64 bytes): aposta-se na localidade espacial. Um código que respeita a localidade (ex.: percorrer matrizes na ordem em que estão na memória) pode ser várias vezes mais rápido que um que a ignora.

Aprofundamento: como a cache encontra um dado

O endereço de memória é quebrado em três campos para localizar o dado na cache:

[ ........ TAG ........ | ... ÍNDICE ... | OFFSET ]

OFFSET → posição do byte dentro do bloco
ÍNDICE → qual linha/conjunto da cache
TAG    → confirma se é o bloco certo
OrganizaçãoComo mapeiaCaracterística
Mapeamento diretoCada bloco só pode ir a uma linha fixaRápida e simples; mais conflitos
Associativa por conjuntosBloco pode ir a qualquer via de um conjunto (2, 4, 8 vias)Equilíbrio usado na prática
Totalmente associativaBloco pode ir a qualquer linhaMenos conflitos; cara (comparadores)

Aprofundamento: AMAT e políticas de cache

O desempenho real da memória é medido pelo tempo médio de acesso (AMAT), que pondera acertos e faltas:

AMAT = tacerto + (taxafalta × penalidadefalta)

Reduzir a taxa de faltas (caches maiores/associativas) ou a penalidade (níveis L1/L2/L3) melhora o AMAT.

Política de escrita:

  • Write-through: escreve na cache e na RAM ao mesmo tempo (simples, mais tráfego).
  • Write-back: escreve só na cache; grava na RAM ao remover o bloco (eficiente, usa bit dirty).

Substituição: ao encher, qual bloco sai? LRU (menos usado recentemente), FIFO ou aleatório.

Aprofundamento: a DRAM por dentro

Cada bit de DRAM é guardado em uma célula 1T1C: um transistor e um capacitor. A carga do capacitor (carregado = 1, descarregado = 0) vaza com o tempo — por isso a DRAM precisa ser recarregada (refresh) milhares de vezes por segundo. É a origem do nome "dinâmica".

A latência (tempo até o primeiro dado, ligada aos tempos CAS/RAS) evoluiu pouco; o grande ganho das gerações de DDR está na banda (bytes por segundo), não na latência.

Aprofundamento: memória Flash NAND (SSDs)

SSDs e pendrives usam Flash NAND, que guarda carga em uma porta flutuante. A quantidade de bits por célula define um trade-off entre densidade, custo e durabilidade:

TipoBits/célulaCaracterística
SLC1Mais rápida e durável; cara (uso corporativo)
MLC2Equilíbrio
TLC3Comum em SSDs de consumo
QLC4Mais barata e densa; menos ciclos de escrita

A Flash lê/escreve em páginas, mas só apaga em blocos inteiros, e cada célula suporta um número limitado de apagamentos. Por isso o controlador faz wear leveling (distribui o desgaste) e garbage collection. O 3D NAND empilha células verticalmente para ganhar capacidade.

Aprofundamento: confiabilidade e memória virtual

Memória ECC

Raios cósmicos e ruído podem inverter bits ("soft errors"). A memória ECC adiciona bits de verificação (códigos de Hamming) capazes de corrigir 1 bit e detectar 2 bits por palavra — essencial em servidores.

TLB e memória virtual

A memória vista pelos programas é virtual: a MMU traduz endereços virtuais em físicos consultando a tabela de páginas. A TLB é uma cache dessas traduções, evitando acessos extras à memória a cada referência.

Note a recursão da ideia de cache: TLB faz cache de traduções, L1/L2/L3 fazem cache de dados, a RAM faz cache do disco (via paginação). Em todos os níveis vale a mesma lógica de localidade.

Glossário do tópico

RAMMemória volátil de trabalho, leitura e escrita.
ROMMemória não-volátil, predominantemente de leitura.
CacheMemória rápida intermediária entre CPU e RAM.
VolátilPerde os dados sem energia.
Bit / ByteMenor unidade (0/1) / conjunto de 8 bits.
LatênciaTempo até iniciar o acesso a um dado.
LocalidadeTendência de reusar dados (temporal) e vizinhos (espacial).
AMATTempo médio de acesso = tacerto + taxafalta × penalidade.
DRAM / DDRCélula 1T1C com refresh; DDR transfere nas duas bordas do clock.
ECCMemória que corrige 1 bit e detecta 2 bits de erro.

Exercícios resolvidos

1. Um HD é vendido como 2 TB. Por que o sistema operacional mostra cerca de 1862 GB?

Ver solução
O fabricante usa base 10: 2 TB = 2×1012 bytes. O SO usa base 2 (GiB = 230). 2×1012 / 2301862 GiB. Não há perda de espaço — apenas duas definições diferentes de "giga".

2. Uma cache tem tempo de acerto de 1 ns, taxa de falta de 5% e penalidade de falta de 100 ns. Calcule o AMAT.

Ver solução
AMAT = tacerto + (taxafalta × penalidade) = 1 + (0,05 × 100) = 6 ns. Mesmo com 95% de acertos, as faltas dominam o tempo médio — daí a importância de reduzir a taxa de falta.

3. Endereço de 32 bits, blocos de 64 bytes, cache de mapeamento direto com 512 linhas. Quantos bits têm os campos offset, índice e tag?

Ver solução
Offset = log264 = 6 bits. Índice = log2512 = 9 bits. Tag = 32 − 6 − 9 = 17 bits.

4. Por que a cache usa SRAM e a memória principal usa DRAM?

Ver solução
A SRAM é muito mais rápida e não precisa de refresh, ideal para a cache (pequena e veloz), mas é cara e ocupa mais área por bit. A DRAM é mais lenta e exige refresh, porém é barata e densa — adequada para a grande capacidade da memória principal. É o trade-off velocidade × custo × capacidade da hierarquia.

Resumindo

A memória de um computador não é uma só: é uma hierarquia que troca velocidade por capacidade. Registradores e cache (rápidos e pequenos), RAM (volátil de trabalho), ROM/Flash e armazenamento secundário (não-voláteis e grandes). Tudo medido em bits e bytes e seus múltiplos.

Voltar aos Tópicos