Cache: bits de tag, índice e offset e tempo médio de acesso
Divide o endereço em tag, índice e offset a partir do tamanho da cache, do bloco e da associatividade, e calcula linhas, conjuntos, overhead de tags e o tempo médio de acesso à memória (AMAT).
- Roda no seu navegador
Resultado
O resultado aparece aqui.
Do endereço aos bits de tag, índice e offset
linhas = tamanho ÷ bloco; conjuntos = linhas ÷ vias; offset = log2(bloco); índice = log2(conjuntos); tag = endereço − índice − offset; AMAT = hit time + taxa de falhas × penalidade
Numa cache com mapeamento por conjuntos, o endereço se divide em três partes: o offset escolhe o byte dentro do bloco, o índice escolhe o conjunto e a tag identifica qual bloco da memória está ali. A AMAT combina o tempo de acerto com o custo das falhas.
Exemplo de cache de 32 KiB com 4 vias
| Campo | Valor |
|---|---|
| Tamanho da cache (KiB) | 32 |
| Tamanho do bloco (bytes) | 64 |
| Associatividade (vias) | 4 |
| Largura do endereço (bits) | 32 |
| Linhas (blocos) da cache | 512 |
| Conjuntos | 128 |
| Bits de offset | 6 |
| Bits de índice | 7 |
| Bits de tag | 19 |
| Overhead de tags e bit de validade (% do dado) | 3,91 |
| Tempo médio de acesso, AMAT | 6 |
Cuidados com a cache e a AMAT
- Tamanho do bloco, número de vias e tamanho da cache precisam ser potências de 2.
- Mapeamento direto tem 1 via; uma cache totalmente associativa tem 1 conjunto e nenhum bit de índice.
- O overhead conta a tag e um bit de validade por linha; bits de sujo ou de substituição não entram.
- A taxa de falhas e a penalidade dependem do programa e da hierarquia de memória: use medidas do seu caso.
Nota: Cálculo de arquitetura de computadores com os valores digitados.
Perguntas frequentes
Quantos bits de tag, índice e offset tem uma cache de 32 KiB com 4 vias?
Com bloco de 64 bytes e endereço de 32 bits: 6 bits de offset, 7 de índice e 19 de tag.
Qual o tempo médio de acesso?
Com hit time 1, 5% de falhas e penalidade 100, a AMAT é 6.
Quanto a cache gasta com tags?
São 512 linhas e um overhead de 3,91% do tamanho dos dados.