Você está na página 1de 31

UCB – Universidade Católica de Brasília

Arquitetura de Computadores II – Prof. Adalberto

Aula 8

Prof. Adalberto
Memória Cache
Arquitetura de Computadores II
Tempos de Acessos a Memória
Latência - demora no acesso à memória (ns)
Taxa de Transferência (throughput) – quantidade
Arquitetura de Computadores II – Prof. Adalberto

de acessos em um intervalo de tempo


UCB – Universidade Católica de Brasília

(acessos/segundo)
✔ Taxa Transferência = 1 / Latência
Largura de Dados – quantidade de bits (ou bytes)
de dados envolvidos em uma única transferência
(largura do barramento de dados)
Largura de Banda – quantidade de bits (ou bytes)
de dados transmitidos em um intervalo de tempo
(bits ou bytes por segundo)
Exemplo
Se uma memória tem uma latência de 10ns
por operação (10x10-9s) e uma largura de
Arquitetura de Computadores II – Prof. Adalberto

dados de 32 bits (barramento de dados),


UCB – Universidade Católica de Brasília

qual a taxa de transferência e a largura de


banda da memória?
✔ Taxa de Transferência = 1 / 10ns = 100.000.000
de acessos por segundo
✔ Largura de Banda = 100.000.000 x 32 = 3,2
bilhões de bits por segundo ou 400 milhões de
bytes por segundo
Característica
É o componente crítico na hierarquia de
memória
Arquitetura de Computadores II – Prof. Adalberto


Comparada ao tamanho da memória principal, o
tamanho da memória cache é bem menor
UCB – Universidade Católica de Brasília


Trabalha na mesma velocidade, ou quase, do
processador

Muito mais cara, quando comparada com a
memória principal

A cache contém cópias de seções da memória
principal
UCB – Universidade Católica de Brasília
Arquitetura de Computadores II – Prof. Adalberto

Memória
Processador

Virtual
Cache

Principal

Memória
Memória
Processador
Hierarquia de Memórias
Localidade
● Localidade Espacial
● Se uma informação é acessada dentro de um
Arquitetura de Computadores II – Prof. Adalberto

programa, é provável que informações


UCB – Universidade Católica de Brasília

adjacentes serão acessadas em um futuro


próximo
● Localidade Temporal
● Se uma informação é acessada dentro de um
programa, é provável que ela seja acessada
novamente em um futuro
Interface
Cache – Memória Principal
Um acesso à memória principal causa a
transferência de K palavras para a cache
Arquitetura de Computadores II – Prof. Adalberto

O bloco transferido da memória principal para a


UCB – Universidade Católica de Brasília

cache é uma unidade simples chamada linha


Uma vez copiada para cache, palavras individuais
dentro da linha podem ser acessadas pela CPU
UCB – Universidade Católica de Brasília
Arquitetura de Computadores II – Prof. Adalberto

e da Memória Cache
Estrutura da Memória Principal
Acessos à Memória Cache
Um acesso à cache pode acarretar duas
situações:
Arquitetura de Computadores II – Prof. Adalberto

✔ Hit cache: o bloco acessado está na memória


UCB – Universidade Católica de Brasília

cache
✔ Não será necessário um acesso à memória principal
✔ Miss cache: o bloco acessado não está na
cache.
✔ Será necessário um acesso à memória principal
Organização da Cache
Se há 2n palavras na memória principal, então
n
haverá M = 2 /K blocos na memória principal
Arquitetura de Computadores II – Prof. Adalberto

M será muito maior que o número de linhas C,


UCB – Universidade Católica de Brasília

na cache
Todas as linhas na cache devem ser
marcadas (por uma tag) de alguma maneira
para identificar que bloco da memória principal
ela é.
✔ A linha de dado e sua tag são armazenadas
na cache
Funções de Mapeamento
Já que M é bem maior que C, como os
blocos são mapeados para linhas
Arquitetura de Computadores II – Prof. Adalberto

específicas na cache?
UCB – Universidade Católica de Brasília

Exemplo
✔ Cache de 64KB
✔ Linha de cache de 4 bytes (32bits)
✔ A cache tem (214 = 16K) linhas de 4 bytes
✔ Memória principal de 16MB
✔ Endereço de 24bits
✔ (224=16M)
Funções de Mapeamento
Memória de 16MB
Cache de 64KB
0x000000
0x0000
Arquitetura de Computadores II – Prof. Adalberto
UCB – Universidade Católica de Brasília

0x3FFF

Cache de 64KB tem:


16.384 linhas de 4 bytes

Memória Principal de 16MB tem:


4.194.304 blocos de 4 bytes

A MP é 256 vezes maior que a Cache 0xFFFFFF


Mapeamento Direto
Cada bloco da memória principal é
associado a uma linha específica na cache
Arquitetura de Computadores II – Prof. Adalberto

O endereço é dividido em duas partes


UCB – Universidade Católica de Brasília

✔ Os w bits menos significativos identificam uma


palavra
✔ Os s bits mais significativos especificam um dos
2s blocos da memória principal
A cache interpreta esses s-bits como uma
tag de (s – r)bits e um campo “linha” de r bits
Tag (s-r) Linha (r) palavra (w)

8 14 2
Arquitetura de Computadores II – Prof. Adalberto

Endereço de 24bits
UCB – Universidade Católica de Brasília

Identificador de palavra de 2bits (blocos de 4 bytes)


Identificador de bloco de 22bits
✔ Tag de 8bits (=22-14)
✔ Identificador de linha de 14bits
Nunca, dois blocos distintos na mesma linha têm a mesma
tag
A checagem do conteúdo da cache é feita achando a linha
na cache e checando a TAG
Mapeamento Direto
Linha de Cache Blocos da memória principal
0 0, m, 2m, 3m…2s-m
Arquitetura de Computadores II – Prof. Adalberto

s
1 1,m+1, 2m+1…2 -m+1
UCB – Universidade Católica de Brasília

(...) (...)
m-1 m-1, 2m-1,3m-1…2s-1
UCB – Universidade Católica de Brasília
Arquitetura de Computadores II – Prof. Adalberto

Mapeamento Direto
Organização de Cache com
Exemplo de Mapeamento Direto
Memória principal de 1MB (endereços de
20bits) endereçável por bytes individuais
Arquitetura de Computadores II – Prof. Adalberto

Cache de 1K-linhas, cada uma contém


UCB – Universidade Católica de Brasília

8Bytes
✔ Id de palavras = 3bits
✔ Id de linhas = 10bits
✔ Id de TAG = 7bits
Onde estará na cache o byte armazenado
na memória principal no endereço
0xABCDE?
Mapeamento Associativo
Um bloco pode ser armazenado em
qualquer linha na cache
Arquitetura de Computadores II – Prof. Adalberto

O Endereço de memória é interpretado


UCB – Universidade Católica de Brasília

como tag+word
A TAG identifica um único bloco da memória
Deve examinar cada linha na cache para
achar o bloco certo da memória principal
✔ Examina a TAG de cada linha
✔ Processo lento para caches grandes!
UCB – Universidade Católica de Brasília
Arquitetura de Computadores II – Prof. Adalberto

Mapeamento Associativo
Organização de Cache com
Exemplo

Id de palavra = 3 bits

Id de Tag = 17 bits
Arquitetura de Computadores II – Prof. Adalberto
UCB – Universidade Católica de Brasília

Onde estará na cache o byte armazenado no endereço


de memória 0xABCDE?

0xABCDE = 10101011110011011 110

Linha de cache desconhecida,

e tag 0x1579D

deslocamento = 0x6
0x1578D
Mapeamento Associativo por
Conjunto
Meio termo entre o mapeamento direto e
mapeamento totalmente associativo
Arquitetura de Computadores II – Prof. Adalberto

Divide a cache em vários conjuntos (v), cada


UCB – Universidade Católica de Brasília

conjunto contém algumas linhas (k)


Os blocos da memória principal podem ser
armazenados em qualquer uma das k linhas
no conjunto, tal que:
Número do conjunto = j modulo v
✔ Onde j é o endereço de memória
Mapeamento Associativo por
Conjunto
Se um conjunto comporta X linhas, a cache
é referenciada como uma cache associativa
Arquitetura de Computadores II – Prof. Adalberto

por conjunto X-way


UCB – Universidade Católica de Brasília

A maioria das caches hoje que usam


mapeamento associativo por conjunto são 2,
4 ou 8-way
UCB – Universidade Católica de Brasília
Arquitetura de Computadores II – Prof. Adalberto

Conjunto k-way
Organização de Cache com
Mapeamento Associativo por
Estrutura de Endereço em
Mapeamento Associativo por
Conjunto
Word
Tag 9 bits conjunto 13 bits 2 bits
Arquitetura de Computadores II – Prof. Adalberto
UCB – Universidade Católica de Brasília

Usa o campo conjunto para determinar onde


procurar na cache
Compara o campo tag para ver se houve hit-
cache
UCB – Universidade Católica de Brasília
Arquitetura de Computadores II – Prof. Adalberto

1023
0
palavras (bytes) em 4-way
Exemplo
Supor uma cache com 1024 linhas de 8
UCB – Universidade Católica de Brasília
Arquitetura de Computadores II – Prof. Adalberto

1023
0

255
0

255
0
1024 / 4 = 256 conjuntos

255
0
Exemplo (cont)

255
0
Exemplo
Id de palavra = 3 bits
Id de conjunto = 8 bits
Arquitetura de Computadores II – Prof. Adalberto

Id de Tag = 9 bits
UCB – Universidade Católica de Brasília

Onde estará armazenado o endereço de memória


0xABCDE na cache?
0xABCDE = 101010111 10011011 110

0x00
TAG = 0x157
0x9B
conjunto = 0x9B 0xFF

palavra = 0x6
Algoritmo de Substituição de
Linha
Quando uma cache associativa ou
associativa por conjunto está cheia, que
Arquitetura de Computadores II – Prof. Adalberto

linha deve ser substituída pela nova linha


UCB – Universidade Católica de Brasília

que está sendo lida da memória?


✔ Nenhum problema para o mapeamento direto já que
cada bloco tem uma linha pré-determinada para ser
substituída
✔ A menos recentemente usada
✔ FIFO
✔ A menos freqüentemente usada
✔ Randômica
Políticas de Escrita
Quando uma linha da cache é escrita, a
atualização da memória principal deve ser
Arquitetura de Computadores II – Prof. Adalberto

realizada quando?
UCB – Universidade Católica de Brasília

✔ Write through
✔ Write back
Write Through
Sempre que uma palavra é atualizada na
cache, ela é também atualizada na memória
Arquitetura de Computadores II – Prof. Adalberto

principal
UCB – Universidade Católica de Brasília

Ambas as cópias sempre são iguais


Gera uma quantidade de escritas na
memória principal muito grande
Em geral, apenas 5% a 34% dos acessos à
memória são de escritas
Write Back
A linha da cache só é escrita de volta na
memória principal quando precisa ser
Arquitetura de Computadores II – Prof. Adalberto

substituída
UCB – Universidade Católica de Brasília

Estratégias:
✔ Mais simples: a linha é copiada de volta na
memória principal independente de ter sido
alterada ou não
✔ Mais complexa: a linha só é copiada de volta na
memória principal se foi alterada, para isso,
cada linha da cache deve ter um bit para idicar a
alteração ou não

Você também pode gostar